Kubernetes-高可用叢集證書更新

&UnstopPable發表於2024-09-20

本次k8s版本為v1.23.17

Kubernetes 叢集中的證書主要分為兩大類:

  • Kubernetes 元件證書(如:apiserver 相關的證書)
  • Etcd 叢集證書

根據叢集角色,證書還可以細分為:

  • 管理節點證書
  • 工作節點證書

證書詳情

  1. 管理節點證書
    • Kubeadm 部署:證書會由 Kubeadm 自動生成,覆蓋 Kubernetes 元件(如:apiservercontroller-managerscheduler 等)。
    • 二進位制部署:通常使用 cfsslopenssl 手動生成證書,涉及更多的定製化配置。
  2. 工作節點證書
    • 工作節點主要需要連線 apiserver,使用的是客戶端證書。
    • 該證書由 kube-controller-manager 元件自動頒發和管理,確保 kubelet 能安全地與 apiserver 通訊。

常見證書

- **Kubeadm 部署**:證書會由 Kubeadm 自動生成,覆蓋 Kubernetes 元件(如:`apiserver`、`controller-manager`、`scheduler` 等)。
- **二進位制部署**:通常使用 `cfssl` 或 `openssl` 手動生成證書,涉及更多的定製化配置。
  1. 工作節點證書
    • 工作節點主要需要連線 apiserver,使用的是客戶端證書。
    • 該證書由 kube-controller-manager 元件自動頒發和管理,確保 kubelet 能安全地與 apiserver 通訊。

證書有效期及更新

Kubernetes 證書預設有效期為 1 年,可以透過 kubeadm certs 工具檢查和更新證書:

檢視證書過期時間

kubeadm certs check-expiration

該命令顯示了 所有證書的到期/剩餘時間,包括在etc/kubernetes/pki目錄下的客戶端證書及由kubeadm嵌入到KUBECONFIG檔案中的客戶端證書(admin.conf,controller-manager.conf和scheduler.conf)

手動更新證書

使用 kubeadm certs renew 命令 可以隨時手動續訂證書,該命令使用儲存在/etc/kubernetes/pki中的 CA (or front-proxy-CA)證書和金鑰來更新證書

證書備份

注意:高可用叢集需要在所有master節點上操作

cp -r /etc/kubernetes /etc/kubernetes.bak

續訂所有證書

命令執行後,注意:

  • 無論證書的到期時間如何,都會無條件地續訂一年。
  • 證書的SAN等資訊基於原證書,無需再次提供。
  • renew執行後,為使更改生效,需要重啟各元件。

注意:高可用叢集需要在所有master節點上操作

kubeadm certs renew all

檢視證書有效期

[root@master01 ~]# kubeadm certs check-expiration

重啟 kube-apiserver、kube-controller-manager、kube-scheduler、etcd 元件後生效

[root@master01 ~]# mv /etc/kubernetes/manifests/* /tmp/
//約等30秒後 kube-apiserver、kube-controller-manager、kube-scheduler、etcd 容器會停止,然後,再將清單檔案移過來:
[root@master01 ~]# mv /tmp/kube-* /etc/kubernetes/manifests/
[root@master01 ~]# mv /tmp/etcd.yaml /etc/kubernetes/manifests/

可以看到已經重啟成功

修改config檔案

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

相關文章