目錄
1 證書過期的情況
2 Kubernetes環(huán)境介紹
3 替換證書步驟
3.1 在master上查看各證書的過期時間
3.2?查看master(192.168.0.190)上kubelet證書列表
3.3??查看master(192.168.0.190)上kubelet證書的過期時間
3.4?查看node1和node2上kubelet證書的過期時間(同(2))
3.5?備份相關證書文件的目錄
3.6?輪換master上證書
3.7?再次查看證書過期日期
3.8?查看/etc/kubernetes/pki/證書是否更新了
3.9 移除conf文件
3.10?重新生成kubeconfig文件
3.11?查看是否生成出來了新的配置文件
3.12?重新拷貝管理員所用的新的kubeconfig文件
3.13?重啟kube-scheduler
4 輪換kubelet證書
4.1?輪換master上的kubelet證書
4.1.1 在master上查看證書簽名請求(簡稱為CSR)
4.1.2 查看當前kubelet證書的過期時間
?4.2 輪換node上的kubelet證書
4.2.1 生成node1所需要的kubelet.conf文件
4.2.2?切換到node1,重啟kubelet?
5 重啟集群
6 后遺癥
本博客參考
https://blog.csdn.net/Harry_z666/article/details/128015175
已進行了驗證,非常感謝原文博主的記錄~
另外,我的kubernetes版本為V1.23.4。
請在更新證書前使用命令行刪除之前的工作部署容器,以免產(chǎn)生垃圾數(shù)據(jù),對測試產(chǎn)生不必要的麻煩。截圖上的時間請忽略,注意內(nèi)容就好,畢竟記錄本篇博客的時候我已經(jīng)按著教程更新完了證書,都是補圖或搜索到的狀態(tài)類似的圖。
1 證書過期的情況
使用kubeadm方式安裝的kubernetes集群各個組件所使用的證書期限為1年,到期后,證書失效,kubectl命令無法使用,在使用kubectl命令時,報錯無法連接到localhost:8080。
2 Kubernetes環(huán)境介紹
192.168.0.190為master節(jié)點,192.168.0.191、192.168.0.192分別為node1和node2節(jié)點。操作系統(tǒng)為linux 4.19.90-25.2.v2101.gfb01.ky10.aarch64
3 替換證書步驟
3.1 在master上查看各證書的過期時間
kubeadm certs check-expiration
3.2?查看master(192.168.0.190)上kubelet證書列表
ls /var/lib/kubelet/pki/
3.3??查看master(192.168.0.190)上kubelet證書的過期時間
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not
3.4?查看node1和node2上kubelet證書的過期時間(同(2))
3.5?備份相關證書文件的目錄
(很重要,養(yǎng)成備份好習慣,證書廢掉集群就要重新安裝了)
cp -r /etc/kubernetes/ /tmp/backup/ # 靜態(tài)pods配置以及證書
cp -r /var/lib/kubelet/pki/ /tmp/backup.crr #證書pem存放目錄
3.6?輪換master上證書
[root@master kubernetes]#kubeadm certs renew all
?(借的圖,因為我的證書已經(jīng)更新完了,更新結束才進行的記錄)
3.7?再次查看證書過期日期
[root@master kubernetes]#kubeadm certs check-expiration
3.8?查看/etc/kubernetes/pki/證書是否更新了
[root@master kubernetes]#ll -a /etc/kubernetes/pki/
當前kubernetes各組件所使用的kubeconfig在/etc/kubernetes/里:?
[root@master kubernetes]#ll -a /etc/kubernetes/
3.9 移除conf文件
[root@master kubernetes]#rm -rf /etc/kubernetes/*.conf
[root@master kubernetes]#ls
3.10?重新生成kubeconfig文件
#注意版本號
[root@master kubernetes]#kubeadm init --kubernetes-version=v1.23.4 phase kubeconfig all
3.11?查看是否生成出來了新的配置文件
[root@master kubernetes]# ll -a /etc/kubernetes/
所需要的kubeconfig文件,就是上面的kubelet.conf。
3.12?重新拷貝管理員所用的新的kubeconfig文件
#備份下/root/.kube/config 文件:
cp /root/.kube/config /tmp/kube.old/config
#替換:
[root@master kubernetes]# cp /etc/kubernetes/admin.conf ~/.kube/config
3.13?重啟kube-scheduler
[root@master kubernetes]# docker ps -a | grep kube-scheduler | awk ‘{print $1}’
[root@master kubernetes]# docker rm -f 上述容器
#等待kube-scheduler徹底啟動起來,即狀態(tài)為1/1。
[root@master kubernetes]# kubectl get pods -n kube-system | grep scheduler
4 輪換kubelet證書
4.1?輪換master上的kubelet證書
#查看kubelet當前所使用的證書
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
#通過kubeadm certs renew all更新的 k8s 證數(shù),是不會更新 kubelet.conf 的證書的。
#所以此處的證書重啟kubelet cho重新生成。
#因為前面已經(jīng)重新生成了kubelet.conf,現(xiàn)在重啟kubelet。
[root@master kubernetes]# systemctl restart kubelet
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
4.1.1 在master上查看證書簽名請求(簡稱為CSR)
[root@master kubernetes]# kubectl get csr
#我的報的是“No Resource Found”,目前看來是不影響使用的,看其他人的是有信息的,不清楚具體原因。
[root@master kubernetes]# kubectl certificate approve csr-vg9bd
certificatesigningrequest.certificates.k8s.io/csr-vg9bd approved(未操作該步驟)
4.1.2 查看當前kubelet證書的過期時間
[root@master kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
#PS:未過期的話應該是可以不處理的,我當時查看kubelet的證書時間還沒過期,所以沒有操作證書替換
?4.2 輪換node上的kubelet證書
4.2.1 生成node1所需要的kubelet.conf文件
#在master上生成worker所需要的kubelet.conf臨時放在/tmp下
[root@master tmp]# mkdir -p /tmp/worker
#生成node1所需要的kubelet.conf文件。注意更改成自己的信息
[root@master worker]# kubeadm init --kubernetes-version=v1.23.4 phase kubeconfig kubelet --node-name node1 --kubeconfig-dir /tmp/worker/
#[kubeconfig] Writing “kubelet.conf” kubeconfig file
#node1(192.168.0.191)上的/etc/kubernetes/目錄里覆蓋原來的kubelet.conf。先備份原先node1的kubelet.conf文件:
[root@node1 kubernetes]# mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubeletconf.bak
[root@master worker]# scp /tmp/worker/kubelet.conf root@192.168.0.191:/etc/kubernetes/
4.2.2?切換到node1,重啟kubelet?
[root@node1 kubernetes]# systemctl restart kubelet
#再次查看證書
[root@node1 kubernetes]# ll -a /var/lib/kubelet/pki/
#查看kubelet證書的過期時間。
[root@node1 kubernetes]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not
#切換到master(192.168.0.190)上,查看CSR。(未操作)
[root@master worker]# kubectl get csr
其他節(jié)點同上操作。
5 重啟集群
reboot
修改配置之后記得重啟就行,大部分時候重啟能解決很多問題~~
6 后遺癥
如果容器不能自動調(diào)度,在節(jié)點少的情況下嘗試手動分配各節(jié)點,之后就可以進行調(diào)度了,具體原因還不太清楚。文章來源:http://www.zghlxwxcb.cn/news/detail-558754.html
如果更新證書后還有之前的任務容器,看著像在運行,實際沒有工作,可以用命令行刪除該容器,或在k8s里清理掉名稱空間,防止垃圾數(shù)據(jù)造成容器無法重新啟動。文章來源地址http://www.zghlxwxcb.cn/news/detail-558754.html
到了這里,關于K8S證書過期解決辦法之替換證書的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!