本次k8s版本為v1.23.17
Kubernetes 叢集中的證書主要分為兩大類:
- Kubernetes 元件證書(如:
apiserver
相關的證書) - Etcd 叢集證書
根據叢集角色,證書還可以細分為:
- 管理節點證書
- 工作節點證書
證書詳情
- 管理節點證書:
- Kubeadm 部署:證書會由 Kubeadm 自動生成,覆蓋 Kubernetes 元件(如:
apiserver
、controller-manager
、scheduler
等)。 - 二進位制部署:通常使用
cfssl
或openssl
手動生成證書,涉及更多的定製化配置。
- Kubeadm 部署:證書會由 Kubeadm 自動生成,覆蓋 Kubernetes 元件(如:
- 工作節點證書:
- 工作節點主要需要連線
apiserver
,使用的是客戶端證書。 - 該證書由 kube-controller-manager 元件自動頒發和管理,確保
kubelet
能安全地與apiserver
通訊。
- 工作節點主要需要連線
常見證書
- **Kubeadm 部署**:證書會由 Kubeadm 自動生成,覆蓋 Kubernetes 元件(如:`apiserver`、`controller-manager`、`scheduler` 等)。
- **二進位制部署**:通常使用 `cfssl` 或 `openssl` 手動生成證書,涉及更多的定製化配置。
- 工作節點證書:
- 工作節點主要需要連線
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