配置 Kubelet 的證書輪換
本頁面介紹如何為 kubelet 啟用和配置證書輪換。
Kubernetes v1.19 [stable]
準備工作
- 需要 Kubernetes 1.8.0 或更高版本。
概述
Kubelet 使用證書向 Kubernetes API 進行身份驗證。預設情況下,這些證書的有效期為一年,因此不需要過於頻繁地續訂。
Kubernetes 包含 kubelet 證書輪換,它將在當前證書接近過期時自動生成一個新金鑰並向 Kubernetes API 請求一個新證書。一旦新證書可用,它將用於向 Kubernetes API 的連線進行身份驗證。
啟用客戶端證書輪換
kubelet
程序接受一個引數 --rotate-certificates
,該引數控制 kubelet 是否在當前使用證書的有效期接近過期時自動請求新證書。
kube-controller-manager
程序接受一個引數 --cluster-signing-duration
(在 1.19 版本之前為 --experimental-cluster-signing-duration
),該引數控制證書的頒發時長。
理解證書輪換配置
當 kubelet 啟動時,如果它配置為自舉(使用 --bootstrap-kubeconfig
標誌),它將使用其初始證書連線到 Kubernetes API 併發出證書籤名請求。你可以使用以下命令檢視證書籤名請求的狀態:
kubectl get csr
最初,來自節點上 kubelet 的證書籤名請求的狀態將為 Pending
。如果證書籤名請求符合特定條件,它將由控制器管理器自動批准,然後其狀態將為 Approved
。接下來,控制器管理器將簽署一個證書,其有效期由 --cluster-signing-duration
引數指定,並且簽名的證書將附加到證書籤名請求。
kubelet 將從 Kubernetes API 中檢索簽名的證書並將其寫入磁碟,位於 --cert-dir
指定的位置。然後 kubelet 將使用新證書連線到 Kubernetes API。
隨著簽名證書的有效期臨近,kubelet 將使用 Kubernetes API 自動發出新的證書籤名請求。這可能發生在證書剩餘時間的 30% 到 10% 之間的任何時間點。同樣,控制器管理器將自動批准證書請求並將簽名的證書附加到證書籤名請求。kubelet 將從 Kubernetes API 中檢索新的簽名證書並將其寫入磁碟。然後它將更新與 Kubernetes API 的連線,以使用新證書重新連線。