Kubernetes でコントロールプレーンノードを追加する時に、kubeadm-certs が存在せず kubeadm join --control-plane に失敗した時の整理です。
この記事の位置づけ
この記事は、kubeadm でコントロールプレーンノードを追加できない場合の証明書まわりを扱います。kubeadm-certs の期限や再生成を、クラスタ拡張時のつまずきとして整理します。
参考
書籍
書籍
参考書籍
Kubernetes完全ガイド 第2版
Kubernetes の仕組み、リソース、ネットワーク、運用観点を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
control plane 追加時の join コマンド
sudo kubeadm join 10.0.1.180:6443 --token <token> --discovery-token-ca-cert-hash <discovery-token-ca-cert-hash> --control-plane --certificate-key <certificate-key>発生したエラー
[download-certs] Downloading the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
error execution phase control-plane-prepare/download-certs: error downloading certs: error downloading the secret: Secret "kubeadm-certs" was not found in the "kube-system" Namespace. This Secret might have expired.
Please, run kubeadm init phase upload-certs --upload-certs on a control plane to generate a new one原因の見方
kubeadm-certs は control plane 追加時に必要な証明書を一時的に共有するための Secret です。存在しない、または期限切れの場合、既存 control plane 側で証明書を再アップロードして、新しい certificate-key を取得します。
既存 control plane で証明書を再アップロードする
sudo kubeadm init phase upload-certs --upload-certs新しい join コマンドを作成する
sudo kubeadm token create --print-join-command --certificate-key <certificate-key>確認すること
- 既存 control plane の API server が正常に動作しているか。
kubeadm-configConfigMap が読めるか。- container runtime の pause image など、preflight warning も合わせて確認する。
- 新しい control plane ノードで時刻同期が取れているか。
まとめ
control plane ノード追加に失敗した場合、token だけでなく certificate-key と kubeadm-certs の状態を確認します。エラーにある通り、既存 control plane で upload-certs を実行し、新しい join コマンドを作ることで復旧できる場合があります。
Kubernetes コントロールプレーンノードを追加できない場合 – kubeadm-certs を再生成する


