在 Kubernetes 集群運行一段時間後,憑證可能會過期,影響集群的正常運行。因此,管理員需要定期檢查並更新憑證。本文將介紹如何使用 kubeadm
手動更新 Kubernetes 憑證,並提供一些最佳實踐來確保更新過程順利。
Kubernetes 預設的憑證有效期限為 1 年(365 天),因此建議在到期前進行更新,以確保集群正常運作。
可以使用以下指令檢查憑證到期時間:
kubeadm certs check-expiration
可以使用 kubeadm certs renew
命令來手動更新 Kubernetes 的憑證。此命令會使用 CA
(或者 front-proxy-CA
)憑證來更新存儲於 /etc/kubernetes/pki
中的密鑰。
執行以下指令來更新所有憑證:
執行完此命令後,你會看到類似以下的輸出:
[root@k8s-master1 kubernetes]# kubeadm certs renew all
[renew] Reading configuration from the cluster...
[renew] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
W0411 18:39:49.556478 1094 utils.go:69] The recommended value for "clusterDNS" in "KubeletConfiguration" is: [10.233.0.10]; the provided value is: [169.254.25.10]
certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself renewed
certificate for serving the Kubernetes API renewed
certificate for the API server to connect to kubelet renewed
certificate embedded in the kubeconfig file for the controller manager to use renewed
certificate for the front proxy client renewed
certificate embedded in the kubeconfig file for the scheduler manager to use renewed
Done renewing certificates. You must restart the kube-apiserver, kube-controller-manager, kube-scheduler and etcd, so that they can use the new certificates.
由於動態憑證重載目前尚未完全支援所有組件,因此在更新憑證後,必須手動重啟 Kubernetes 的關鍵元件。
Kubernetes 控制平面的關鍵元件(kube-apiserver
、kube-scheduler
和 kube-controller-manager
)通常運行於 Docker 容器中,因此可以使用以下指令來重啟這些元件:
docker ps |grep apiserver|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
docker ps |grep kube-controller|grep -v pause|awk '{print $1}'|xargs docker kill -s HUP
這些指令會發送 HUP
訊號,強制這些容器重新載入配置和憑證。如果你使用的是 containerd 或其他容器運行時,請使用對應的命令來重啟這些組件。
由於靜態 Pods 由 kubelet
而非 API Server
管理,因此 kubectl
無法直接刪除或重啟這些 Pods。
可以使用 systemctl
重新啟動 kubelet
,讓其自動載入新的憑證:
systemctl restart kubelet
cronjob
)來執行 kubeadm certs check-expiration
,以確保不會因憑證過期導致服務中斷。/etc/kubernetes/pki/
和 /etc/kubernetes/admin.conf
以避免意外情況發生。kubectl get pods -n kube-system
來確認所有組件在更新後都正常運行。透過 kubeadm certs renew
命令,可以輕鬆更新 Kubernetes 的憑證,但要注意手動重啟相關組件以確保變更生效。為了避免集群因憑證過期而發生故障,建議定期檢查憑證狀態,並制定更新計劃,以確保系統穩定運行。
如果這篇Kubernetes 憑證的更新能幫助到你請留言告訴我,或與我分享你的使用經驗