今日、ラボの k8s クラスターがクラスターでの作業を許可しなくなりました。調べてみると、証明書の有効期限が切れていたことが原因でした。
証明書と構成を再生成しましたが、kubelet を再起動すると、まだconnection refused
apiserver にアクセスします。apiserver は実行されていますが、ポート 6443 が開いていません。ログをデバッグすると、出力に次のエラーが表示されます (おそらく誤ったエラーですが、確信はありません)。
Current certificate CN (system:node:lab-02) does not match requested CN (system:node:control-plane-xm2c9)
これは作成されたクラスターです。CAを除くすべての証明書を再生成するためにkubeadm
使用しました。次のコマンドを使用しました。kubeadm
# kubeadm init phase certs apiserver --apiserver-cert-extra-sans control-plane-xm2c9 --apiserver-advertise-address 192.168.2.78
# kubeadm init phase certs apiserver-etcd-client
# kubeadm init phase certs apiserver-kubelet-client
私は以下の設定を作成しました:
# kubeadm init phase kubeconfig admin --apiserver-advertise-address 192.168.2.78
# kubeadm init phase kubeconfig kubelet --apiserver-advertise-address 192.168.2.78
# kubeadm init phase kubeconfig controller-manager --apiserver-advertise-address 192.168.2.78
# kubeadm init phase kubeconfig scheduler --apiserver-advertise-address 192.168.2.78
まだログを精査中です。これが問題の根本原因だと思いますが、解決方法がわかりません。どなたか助けていただければ幸いです。
答え1
私の記憶が正しければ、問題は、上記のコマンドでは更新されなかったが必要な証明書があったことです。それが証明書でしたsa
。幸い、この作業を開始する前に、すべての証明書をバックアップしておいたので/var/tmp
、sa
証明書はそこにあり、まだ有効でした。sa
証明書を証明書ディレクトリにコピーして再起動するkubelet
と、すべてが再び機能しました。