Kubernetes完全ガイド 第2版
Kubernetes の仕組み、リソース、ネットワーク、運用観点を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
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 状態確認
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| 対象ノード | worker node |
| 参加済み判定 | /etc/kubernetes/kubelet.conf |
| token TTL | 10m |
| 主なコマンド | kubeadm token create、kubeadm 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:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdefkubelet の状態を確認する
join 後は worker node 側で kubelet の状態を確認します。CNI や control plane との疎通に問題がある場合、ここでエラーが出ます。
sudo systemctl status kubelet --no-pager
sudo journalctl -u kubelet -n 80 --no-pager
sudo crictl infocontrol 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 widetoken の状態を確認する
必要に応じて、control plane 側で token の一覧を確認します。TTL を短くしている場合、時間経過で token は使えなくなります。
sudo kubeadm token list
sudo kubeadm token delete abcdefよくある確認ポイント
- worker node に
kubeletとkubeadmが入っている /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 の両方で状態を確認します。

