k8s via proxmox (1) - Ubuntu Serverテンプレートの作成
2022. 10. 03.
AI生成コンテンツは不正確または誤解を招く可能性があります。
テンプレートとは?
これまでProxmoxを使いながらテンプレートという概念を初めて知りました。 テンプレートを作成すると、VMを作成するたびにインストール過程を経ることなく、テンプレートを複製して作成できます。
Kubernetesをインストールするにはマスターノードとワーカーノードが必要です。 少なくとも3つ以上のVMを設定する必要がありますが、一度は(いや実は2回も...)知らなくてVMを作成するたびにインストール過程を経ていました。 3つのVMのインストールプロセスを同時に進めたところ、アップデートによるネットワークトラフィックの負荷がひどくなって遅くなりました。 そこでテンプレートを作成して、VMを作成するたびにインストール過程を経ることなくテンプレートを複製して作成できるようにしてみましょう。
Ubuntu 22.04 Serverテンプレートの作成
1. VM作成
テンプレートの基本となるVMを作成します。 このときVMには、これまで作成していた方式とは異なり、軽量化されたCloud Imageを使用して作成するため、やや異なる設定が必要です。
-
ProxmoxでVMを作成します。
-
テンプレートにするVMの名前はubuntu-22-04-server-templateにします。 後でvm-idが900であることを前提に進めるため、vm-idも900に設定しましょう。
-
メディアでDo not use any mediaを選択します。 後で説明しますが、クラウドイメージを使用する予定だからです。
-
Systemタブでは Qemu Agentにチェックを入れます。 これはVMが実行中にVMの状態を確認できるようにします。 しなくても問題ありませんが、後で設定することになった場合、有効になっている方が便利です。
-
ディスクは削除して、CPUは1コア、メモリは1GBに設定します。
-
ネットワークは一般的にVMを作成するときと同様に設定します。
2. cloud init設定
作成されたVMのhardwareタブでAdd > CloudInit Driveをクリックします。 こうすると、VMのハードディスクにcloud-init driveが追加されます。 VMのCloud-InitタブでUser Dataを設定します。 このときネットワーク設定は必ずDHCPにする必要があります。 staticに設定すると、複製したVMでIPが重複して問題が発生する可能性があります。 ドメインは記入しなくてもよく、SSH Public Keyは以下の手順に従って生成しましょう。
2.1 SSHキーの生成
SSHキーを生成します。
ssh-keygen -t <key-type> -C <comment>key-typeはrsa、dsa、ecdsa、ed25519などがあります。 commentはキーに対する説明です。
Enter file in which to save the key (C:\Users\minpeter/.ssh/id_rsa): という質問が出たら、proxmox_key...のような適切な名前を入力します。
そしてEnter passphrase (empty for no passphrase): という質問が出たらパスワードを入力します。(なくても問題ありません。)(ない方がいいです。)
生成されたパブリックキーをコピーします。
cat ~/.ssh/<key-name>.pub先ほどproxmox_keyと入力した場合はcat ~/.ssh/proxmox_key.pubと入力すればよいです。
3. Cloud Imageのダウンロード
イメージは少し作業が必要なので、PVEシェルで進めます。
3.1 PVEシェル接続
Web GUIまたはssh root@<proxmox server ip>で接続します。
3.2 Cloud Imageのダウンロード
からダウンロードできます。 ubuntu-22.04-minimal-cloudimg-amd64.imgをダウンロードすればいいので、リンクをコピーしてwgetでダウンロードします。
wget https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64.imgその後、qm set 900 -serial0 socket -vga serial0コマンドを入力します。
このとき900はVMのIDです。
3.3 Cloud Imageの変換
イメージを変換します。
mv ubuntu-22.04-minimal-cloudimg-amd64.img ubuntu-22.04.qcow2
qemu-img resize ubuntu-22.04.qcow2 32G3.4 Cloud Imageの追加
イメージを追加します。
qm importdisk 900 ubuntu-22.04.qcow2 local-lvmもちろんこのときの900もVMのIDです。
3.5 Cloud Imageの設定
ここまで進めてからWeb GUIにアクセスすると、VMのhardwareにUnuse disk 0が追加されていることが確認できます。
editをクリックしてDiscard項目にチェックを入れ、Applyをクリックします。
次にoptionsタブでBoot Orderを2番目に設定します。
Start at boot項目はYesに変更します。
これですべての設定が完了しました。 すべての設定がうまくできたか確認した後、VMリストで900(ubuntu-22-04-server-template)を右クリックしてConvert to Templateをクリックします。 しばらくの作業の後、テンプレートが作成されます。
2. テンプレートを利用したVM作成
先ほど変換したテンプレートを利用してVMを作成してみましょう。
以前と同様に右クリックすると、メニューが変更されているはずです。
今度はCloneをクリックします。
その後、Clone VMというウィンドウが表示されますが、ここでNameをubuntu-testに変更し、ModeをFull Cloneに変更します。
Cloneをクリックした後、電源を入れて待てば完了です。
次回は...?
今作ったテンプレートを利用してk8s-ctrlrとk8s-nodeを作成し、k8s-nodeテンプレートを追加で作成、合計k8s-ctrlr + 2つのk8s-nodeを作成して設定してみましょう。