kubeadm證書續簽

broadviews發表於2024-11-18

在 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執行

  1. 更新所有證書

    kubeadm certs renew all
    
  2. 僅更新某個特定證書
    比如更新 API 伺服器證書:

    kubeadm certs renew apiserver
    
  3. 更新後重啟元件
    續簽證書後,需要重啟 Kubernetes 控制平面元件以載入新證書:

    systemctl restart kubelet
    

常見問題

  1. 如何檢視 kubeadm 生成的證書路徑?
    預設情況下,kubeadm 管理的證書儲存在 /etc/kubernetes/pki

  2. kubelet 自動輪換失敗怎麼辦?
    如果 kubelet 證書未自動更新,可以手動刪除 /var/lib/kubelet/pki 中的舊證書,重啟 kubelet

    rm -rf /var/lib/kubelet/pki/*
    systemctl restart kubelet
    
  3. 證書更新後仍提示過期?
    確保所有相關服務(如 kube-apiserverkube-controller-managerkube-scheduler)已重啟載入新證書。


透過以上方法,可以確保 kubeadm 管理的證書在到期前自動更新,避免叢集因證書過期導致的不可用問題。

相關文章