問題現象
K8S集群證書過期后,會導無法創建Pod,通過kubectl get nodes也無法獲取信息,甚至dashboard也無法訪問。
一、確認K8S證書過期時間
查看k8s某一證書過期時間:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not
顯示如下,通過下面可看到證書有效期是1年,從2021到2022年:
其它證書同理,K8s各個證書過期時間如下:
/etc/kubernetes/pki/apiserver.crt #1年有效期
/etc/kubernetes/pki/front-proxy-ca.crt #10年有效期
/etc/kubernetes/pki/ca.crt #10年有效期
/etc/kubernetes/pki/apiserver-etcd-client.crt #1年有效期
/etc/kubernetes/pki/front-proxy-client.crt #1年有效期
/etc/kubernetes/pki/etcd/server.crt #1年有效期
/etc/kubernetes/pki/etcd/ca.crt #10年有效期
/etc/kubernetes/pki/etcd/peer.crt #1年有效期
/etc/kubernetes/pki/etcd/healthcheck-client.crt #1年有效期
/etc/kubernetes/pki/apiserver-kubelet-client.crt #1年有效期
或使用統一命令查看
kubeadm alpha certs check-expiration
二、使用延長證書過期的方法解決K8S證書過期問題
K8S在過期之前,使用kubeadm alpha phase里的certs和kubeconfig命令,同時配合kubelet證書自動輪換機制來解決這個問題(具體操作可以百度搜索),這里介紹證書已經過期的解決方法,以下延長證書過期的方法適合kubernetes1.14、1.15、1.16、1.17、1.18版本。操作步驟如下:
2.1 下載update-kubeadm-cert.sh
百度網盤下載:
鏈接:https://pan.baidu.com/s/1WyVAwyL3mOGVFgpQ2tomCw
提取碼:f6sa
2.2 把update-kubeadm-cert.sh文件上傳到k8s各節點任意位置
2.3 在每個節點都執行如下命令
1)給update-kubeadm-cert.sh證書授權可執行權限
chmod +x update-kubeadm-cert.sh
2)執行下面命令,修改證書過期時間,把時間延長到10年
./update-kubeadm-cert.sh all
3)在master節點查詢Pod是否正常,能查詢出數據說明證書簽發完成
注:執行命令時需要斷開連接重新連接命令才生效
kubectl get pods -n kube-system
顯示如下,能夠看到pod信息,說明證書簽發正常:
4)重啟kubelet
systemctl restart kubelet
三、驗證證書有效時間是否延長到10年
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not
顯示如下,通過下面可看到apiserver證書有效期是10年,從2021到2031年:
其它證書同理進行驗證,或使用統一查看命令
kubeadm alpha certs check-expiration
(轉發請注明出處:http://www.cnblogs.com/zhangyongli2011/ 如發現有錯,請留言,謝謝)