今天,我們實驗室的 k8s 叢集停止允許在叢集上進行工作。當我挖掘時,是因為證書過期了。
我重新產生了憑證和配置,但是當我重新啟動 kubelet 時,我們仍然可以connection refused
存取 apiserver。 apiserver 正在運行,但連接埠 6443 未開啟。偵錯日誌時,輸出中出現以下錯誤(可能是轉移注意力,但不確定):
Current certificate CN (system:node:lab-02) does not match requested CN (system:node:control-plane-xm2c9)
這是一個kubeadm
創建好的叢集。我曾經kubeadm
重新產生所有憑證(CA 除外)。使用了以下命令:
# 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
我仍在篩選日誌。我認為這是我的問題的根源,但我不知道如何解決它。任何幫助都會很棒! TIA
答案1
如果我沒記錯的話,問題是證書上顯示上述命令沒有更新,但是必要的。這是sa
證書。幸運的是,在我開始這方面的任何工作之前,我備份了所有證書,/var/tmp
並且sa
證書在那裡並且仍然有效。當我將sa
憑證複製回憑證目錄並重新啟動kubelet
時,一切又恢復正常了。