手当たり次第に書くんだ

飽きっぽいのは本能

Kubernetes コントロールプレーンノードを追加できない場合 – kubeadm-certs を再生成する

Kubernetes でコントロールプレーンノードを追加する時に、kubeadm-certs が存在せず kubeadm join --control-plane に失敗した時の整理です。

この記事の位置づけ

この記事は、kubeadm でコントロールプレーンノードを追加できない場合の証明書まわりを扱います。kubeadm-certs の期限や再生成を、クラスタ拡張時のつまずきとして整理します。

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-config ConfigMap が読めるか。
  • container runtime の pause image など、preflight warning も合わせて確認する。
  • 新しい control plane ノードで時刻同期が取れているか。

まとめ

control plane ノード追加に失敗した場合、token だけでなく certificate-keykubeadm-certs の状態を確認します。エラーにある通り、既存 control plane で upload-certs を実行し、新しい join コマンドを作ることで復旧できる場合があります。

Kubernetes コントロールプレーンノードを追加できない場合 – kubeadm-certs を再生成する

コメントを残す

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

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

トップへ戻る