手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Kubernetes ワーカーノードの追加 – kubeadm join でクラスタへ参加する

関連する記事

Kubernetes のワーカーノードは、事前準備を済ませた Ubuntu 26.04 サーバーで kubeadm join を実行してクラスタへ参加させます。control plane の構築とは分けて、join 前の状態確認、短寿命 token の作成、参加後の node 状態確認を順番に扱うと安全です。

この記事では、/etc/kubernetes/kubelet.conf の有無で参加済みかを確認し、control plane 側で kubeadm token create --ttl 10m --print-join-command を実行して、ワーカーノードで kubeadm join する流れをまとめます。

この記事で扱うこと
  • worker node だけを対象にする考え方
  • /etc/kubernetes/kubelet.conf による参加済み判定
  • 短寿命 join token の作成
  • kubeadm join の実行
  • control plane 側での node 状態確認
対象 OSUbuntu 26.04 Server
対象ノードworker node
参加済み判定/etc/kubernetes/kubelet.conf
token TTL10m
主なコマンドkubeadm token createkubeadm join

worker node だけを対象にする

ワーカーノード追加は、control plane の初期化や再作成とは別の作業です。control plane ノードに対して誤って worker join の手順を適用しないように、対象ノードの役割を先に確認します。

hostname
kubeadm version -o short
systemctl status kubelet --no-pager

参加済みか確認する

/etc/kubernetes/kubelet.conf が存在する場合、そのノードはすでにクラスタへ参加済みの可能性があります。再 join の前に、既存状態を確認します。

sudo test -f /etc/kubernetes/kubelet.conf
sudo ls -l /etc/kubernetes/kubelet.conf
sudo systemctl status kubelet --no-pager

既存の /etc/kubernetes/kubelet.conf がある状態で無理に再 join しない方が安全です。再参加や再作成が必要な場合は、kubeadm reset、証明書、CNI、node object の扱いを別作業として設計します。

control plane 側で token を作成する

join command は control plane 側で作成します。短い TTL を指定して、使い終わった token が長く残らないようにします。

sudo kubeadm token create --ttl 10m --print-join-command

出力される command には token と discovery token CA cert hash が含まれます。短寿命でもクラスタ参加に使える情報なので、不要に共有したり、長期間ログへ残したりしないように扱います。

worker node で kubeadm join を実行する

control plane で生成された join command を、対象の worker node で実行します。

sudo kubeadm join k8s-api.example.com:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

kubelet の状態を確認する

join 後は worker node 側で kubelet の状態を確認します。CNI や control plane との疎通に問題がある場合、ここでエラーが出ます。

sudo systemctl status kubelet --no-pager
sudo journalctl -u kubelet -n 80 --no-pager
sudo crictl info

control plane 側で node を確認する

control plane 側の kubeconfig を使って、追加した worker node が表示されるか確認します。CNI 導入前後や network plugin の状態によって、最初は NotReady になる場合があります。

kubectl get nodes -o wide
kubectl describe node worker-node-name
kubectl get pods -A -o wide

token の状態を確認する

必要に応じて、control plane 側で token の一覧を確認します。TTL を短くしている場合、時間経過で token は使えなくなります。

sudo kubeadm token list
sudo kubeadm token delete abcdef

よくある確認ポイント

  • worker node に kubeletkubeadm が入っている
  • /etc/kubernetes/kubelet.conf の有無を確認している
  • control plane の API endpoint へ到達できる
  • join token の TTL を短くしている
  • join command を不要に長期間保存していない
  • control plane 側で kubectl get nodes を確認している

トラブル時の切り分け

join が失敗する場合は、token、CA hash、API endpoint、firewall、時刻同期、container runtime、kubelet の順に確認します。

timedatectl
nc -vz k8s-api.example.com 6443
sudo kubeadm token list
sudo journalctl -u kubelet -n 120 --no-pager
sudo crictl ps -a

まとめ

Ubuntu 26.04 の Kubernetes ワーカーノード追加では、kubeadm join を実行する前に、対象が worker node であること、/etc/kubernetes/kubelet.conf が存在しないこと、control plane へ到達できることを確認します。

join command は control plane 側で短寿命 token として作成し、worker node で実行します。参加後は worker node 側の kubelet と、control plane 側の kubectl get nodes の両方で状態を確認します。

関連する記事
Ubuntu 26.04 Kubernetes ワーカーノードの追加 – kubeadm join でクラスタへ参加する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る