在 Kubernetes 叢集中,kubeadm
提供了管理證書的功能,包括自動續簽證書。以下是關於如何使用 kubeadm
自動續簽證書的詳細步驟:
證書自動續簽機制
Kubernetes 1.15 及更高版本中,kubeadm
部署的證書預設有效期為 1 年。Kubernetes 控制平面包含一個名為 kube-controller-manager
的元件,它執行一個 certificatesigningrequests
的控制器,可以自動簽發新證書。
開啟自動續簽
kubeadm
的證書自動續簽需要在叢集中啟用 kubelet
的 自動輪換功能。
1. 確保啟用了證書輪換
檢查 kubelet
的配置檔案 /var/lib/kubelet/config.yaml
,確保啟用了以下選項:
serverTLSBootstrap: true
rotateCertificates: true
如果沒有這兩個選項,請新增它們,然後重啟 kubelet
:
systemctl restart kubelet
這會啟用 kubelet
定期輪換其自己的證書。
檢查證書過期時間
使用以下命令檢視證書的有效期:
kubeadm certs check-expiration
輸出會顯示所有證書的過期日期,例如:
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Aug 17, 2025 08:47 UTC 364d ca no
apiserver Aug 17, 2025 08:47 UTC 364d ca no
...
手動續簽證書
如果發現證書即將過期,可以手動觸發證書續簽:
如果是高可用部署的k8s叢集,則需要在所有master執行
-
更新所有證書:
kubeadm certs renew all
-
僅更新某個特定證書:
比如更新 API 伺服器證書:kubeadm certs renew apiserver
-
更新後重啟元件:
續簽證書後,需要重啟 Kubernetes 控制平面元件以載入新證書:systemctl restart kubelet
常見問題
-
如何檢視
kubeadm
生成的證書路徑?
預設情況下,kubeadm
管理的證書儲存在/etc/kubernetes/pki
。 -
kubelet 自動輪換失敗怎麼辦?
如果kubelet
證書未自動更新,可以手動刪除/var/lib/kubelet/pki
中的舊證書,重啟kubelet
:rm -rf /var/lib/kubelet/pki/* systemctl restart kubelet
-
證書更新後仍提示過期?
確保所有相關服務(如kube-apiserver
、kube-controller-manager
、kube-scheduler
)已重啟載入新證書。
透過以上方法,可以確保 kubeadm
管理的證書在到期前自動更新,避免叢集因證書過期導致的不可用問題。