ぼっちじゃないよ? – オレオレアドベントカレンダー24日目
一人ぼっちは寂しいよね
一応、家族がいるのでぼっちじゃないよ?
などといいつつ、ぼっちは寂しいのでK8sノードを増やしてたのですが、Hyper-Vでubuntuを量産したけど、イロイロめんどくさかったので手順化しました。
いや、VagrantでHyper-V使えば良いんじゃ?とか正論を言われると、辛いのでやめてください。
Hyper-Vの簡単インストールは簡単でいいよね
まあそう思ってた時期もありました。Ubuntu18.04.1 が簡単に入るけど、IPアドレスはDHCPだし、仮想ディスクが10GBでデスクトップ環境入っててパンパンなのでちょっと困る。
なので、ディスクを増やして固定IPアドレスにする方法をまとめてみました。
なお、その後でHyper-Vコピーしたほうが早いと気づきましたが、作ってしまったものはしょうがないので晒します。
HDDの拡張
一旦Hyper-VのVMをシャットダウンします。チェックポイントがあったら削除します。
その後、仮想ディスクの編集ウィザードを開いて、仮想ハードディスクを選択し、拡張を選択します。
ディスクサイズを増やして完了します。(増やしたあとに撮り直したのは見なかったことにしてください)
さて、ここでOSを起動したら、gdiskの出番です。
/etc/fstab を見て、LABEL名を確認しましょう。
$ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
LABEL=desktop-rootfs / ext4 errors=remount-ro 0 1
#/swapfile none swap sw 0 0
LABEL=UEFI /boot/efi vfat defaults 0 0
/dev/sda を選んで、gdiskを起動します。まず、現状を確認しましょう。パーティション1がrootになります。
$ sudo gdisk /dev/sda
Command (? for help): p
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CE961B45-325A-44A8-B90A-86F24E7CD05D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 23060446
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 227328 23060446 10.9 GiB 8300
14 2048 10239 4.0 MiB EF02
15 10240 227327 106.0 MiB EF00
「o」と打って、新しいMBRを作成します。
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
「n」でパーティションを作り直します。パーティション的に先頭の14から作っていくと楽です。14と15は同じサイズをコピペして、1だけ最後にリターンを押して残った領域をすべて使い切りましょう。
Command (? for help): n
Partition number (1-128, default 1): 14
First sector (34-62914526, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-62914526, default = 62914526) or {+-}size{KMGTP}: 10239
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF02
Changed type of partition to 'BIOS boot partition'
Command (? for help): n
Partition number (1-128, default 1): 15
First sector (34-62914526, default = 10240) or {+-}size{KMGTP}:
Last sector (10240-62914526, default = 62914526) or {+-}size{KMGTP}: 227327
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-62914526, default = 227328) or {+-}size{KMGTP}:
Last sector (227328-62914526, default = 62914526) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
次に「c」でディスクラベルを作成します。fstabで指定してあるものを設定しましょう。ここで「p」を打って確認しておきます。
Command (? for help): c
Partition number (1-15): 1
Enter name: desktop-rootfs
Command (? for help): c
Partition number (1-15): 15
Enter name: UEFI
Command (? for help): p
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 1A677044-C807-4C7F-AA71-9B91D4CF1A63
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 227328 62914526 29.9 GiB 8300 desktop-rootfs
14 2048 10239 4.0 MiB EF02 BIOS boot partition
15 10240 227327 106.0 MiB EF00 UEFI
拡張コマンドで、GUIDを変更前と一緒のものにします。「x」と打つと拡張コマンドになり、「g」でGUIDを設定します。
最後に「p」でGUIDと各パーティションを確認して、「w」で書き込みましょう。
Command (? for help): x
Expert command (? for help): g
Enter the disk's unique GUID ('R' to randomize): CE961B45-325A-44A8-B90A-86F24E7CD05D
The new disk GUID is CE961B45-325A-44A8-B90A-86F24E7CD05D
Expert command (? for help): p
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CE961B45-325A-44A8-B90A-86F24E7CD05D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 227328 62914526 29.9 GiB 8300 desktop-rootfs
14 2048 10239 4.0 MiB EF02 BIOS boot partition
15 10240 227327 106.0 MiB EF00 UEFI
Expert command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
はい、書き込まれてますね。
$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 62914560 sectors, 30.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): CE961B45-325A-44A8-B90A-86F24E7CD05D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 227328 62914526 29.9 GiB 8300 desktop-rootfs
14 2048 10239 4.0 MiB EF02 BIOS boot partition
15 10240 227327 106.0 MiB EF00 UEFI
この後「sudo partprobe /dev/sda」と打って、OS上のパーティション情報を更新し、「resize2fs -f /dev/sda1」でext4のパーティションを拡張して終了です。
ね、簡単でしょ?
※なお、この手順でやるとディスクが壊れるかもしれないけど、仮想マシンだから作り直せばいいし関係ないよね?xfsにフォーマットし直さなかっただけ良しとしよう。というか、なんでxfsじゃないんですかね?
IPアドレスの固定
NetworkManager はなんかめんどくさかった手順がわからなかったので、netplanで何とかします。
/etc/netplan/01-network-manager-all.yaml を以下のように変更します。
IPv4は固定IPアドレスで、IPv6はDHCPです。MTUは9198と大きくしてます。
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: yes
addresses: [IPアドレス/24]
gateway4: Gateway
nameservers:
addresses: [DNS IPアドレス]
mtu: 9198
この後、「sudo netplan apply 」とコマンドを打って、上記のnetplanの設定を有効にします。
この後、/etc/systemd/resolv.conf で、DNS行とDomain行を適宜編集して、「sudo systemctl restart systemd-resolved」でresolverを再起動しましょう。
この後めちゃくちゃデプロイした
まあ、ここまでまとめて、Hyper-Vの機能でコピーしたほうが早いと気づいたんですが、explolerでコピーするとダメで、停止してからHyper-Vのディスク編集ウィザードで別ディスクにコピーしないとダメだそうです。
テンプレ用の仮想ディスクを用意して、デプロイはそのディスクからコピーして終わりです。コピー元はIPv4をDHCPにして、あとはコメントアウトしておくと楽です。 あと、コピーするときはDockerはともかく、kubeadm joinしたあとの状態でコピーすると大変だという気付きを得ました(やった)。
まあ、Vagrantでやったほうが楽じゃねと、この記事書き始めて気づいたけど、VagrantでHyper-Vでハマるより良いよね、きっと。と自分を慰めます。