【初心者向け】自宅Kubernetesクラスタにワーカーノードを追加する方法

3分で読了
更新日
Progress 2 / 18
目次

前回の記事ではとりあえずマスターノードだけ立てましたが、今回はその続き。ワーカーノードを追加して、ようやく“クラスタっぽいもの”に育てていきます。

前回の記事は↓

おうちKubernetesを構築してみた話【kubeadm + CRI-O + Cilium】

>-

blog.otama-playground.com

実行環境

マスターノード、ワーカーノードともに以下のスペックで構築しています。

  • OS: ubuntu server 24.04.2
  • CPU: Intel N150(VMに割当中のコア数=2)
  • RAM: 8GB
  • ディスク: 256GB

手順

マスターノードは前回の記事の手順を踏んで構築済とします。

ワーカーノードのセットアップ

以下の記事と同様の手順を踏んで、ワーカーノードにもkubeadmを導入します。kubeadm, kubelet, kubectlのインストールまでで問題ないです。

おうちKubernetesを構築してみた話【kubeadm + CRI-O + Cilium】

>-

blog.otama-playground.com

ワーカーノードをJOINする

マスターノード側でjoin用のコマンドを生成します。

Terminal window
# マスターノード側で実行
kubeadm token create --print-join-command

コマンドを実行して出力されたコマンドをワーカーノード側で実行します。

Terminal window
# ワーカーノード側で実行
sudo kubeadm join xyz.xyz.xyz.xyz:6443 --token {token} --discovery-token-ca-cert-hash {hash}

Nodeの確認

JOINコマンドが正常終了したらマスターノードに戻り、以下のコマンドを実行します。nodeが追加されていて、STATUSがREADYになっていれば成功です。

Terminal window
kubectl get nodes
# 以下のように出力されればOK
# NAME STATUS ROLES AGE VERSION
# test-01 Ready control-plane 123m v1.33.0
# test-02 Ready <none> 2m53s v1.33.0

ついでにROLEを付ける

Terminal window
# ワーカーノードにworkerラベルを付与
kubectl label nodes test-02 node-role.kubernetes.io/worker=
# 確認
kubectl get nodes --show-labels
# rolesにworkerが入っていれば成功
# NAME STATUS ROLES AGE VERSION LABELS
# test-02 Ready worker 23h v1.33.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=test-02,kubernetes.io/os=linux,node-role.kubernetes.io/worker=

最後に

というわけで、無事(?)Kubernetesクラスタが完成しました。kubeadmのJOINは拍子抜けするほどシンプルで、思っていたよりずっとスムーズにノードを追加できて驚きました。

まだまだ本格運用にはほど遠いですが、「手元のProxmox環境でもk8sクラスタって普通に作れるんだな〜」と実感できたのは大きな収穫。何より、構築してる時のワクワク感がたまらなかったです。

次はPodをデプロイして、Ciliumの挙動をいじったり、ストレージまわりにも手を出していければと思っています。というわけで、ゆるゆると次回に続くかもしれません。