本指南帮助您在 中安装、理解和操作 Kubernetes 证书旋转器,以实现集群内 Kubernetes 证书的自动旋转。
请参见 Cluster Plugin 获取安装说明。
注意:
当前支持:
- 本地部署集群
- DCS 集群
该插件负责以下证书的自动旋转。
证书文件 | 功能 | 节点类型 |
---|---|---|
apiserver.crt | kube-apiserver 的服务器证书 | 控制平面节点 |
apiserver-etcd-client.crt | kube-apiserver 访问 etcd 的客户端证书 | 控制平面节点 |
apiserver-kubelet-client.crt | kube-apiserver 访问 kubelet 的客户端证书 | 控制平面节点 |
front-proxy-client.crt | kube-apiserver 访问聚合 API 服务器的客户端证书 | 控制平面节点 |
etcd/server.crt | etcd 的服务器证书 | 控制平面节点 |
etcd/peer.crt | etcd 成员间的对等通信证书 | 控制平面节点 |
/root/.kube/config, admin.conf, super-admin.conf | 集群管理用 kubeconfig 中的客户端证书 | 控制平面节点 |
controller-manager.conf | kube-controller-manager 的 kubeconfig 中客户端证书 | 控制平面节点 |
scheduler.conf | kube-scheduler 的 kubeconfig 中客户端证书 | 控制平面节点 |
kubelet.crt | kubelet 的服务器证书 | 所有节点 |
kubelet-client-current.pem | kubelet 的客户端证书(由 kubelet.conf 引用) | 所有节点 |
加载证书信息
首先收集所有目标证书的元数据。由于这些证书存储在主机的不同路径,需要从对应文件读取其内容。为此,会在目标节点创建一个临时 Pod,挂载证书目录,允许 Pod 读取信息。证书信息每天收集一次。证书详情(路径、过期时间)保存在 ConfigMap cpaas-system/node-local-certs-<node-name>
中。加密的 CA 证书存储在 Secret cpaas-system/kubernetes-ca
中。
旋转触发条件
证书的 notBefore
和 notAfter
字段表示有效期。当剩余有效期少于 20% 或 30 天时触发旋转。
旋转队列
需要旋转的证书会进入队列等待处理。旋转程序会评估近期旋转活动和待处理任务的紧急程度,决定是否立即处理,以避免多个证书同时旋转导致集群健康问题。
生成新证书
旋转程序根据内部存储的 CA 信息生成新证书。旋转过程中,会在目标节点创建临时 Pod,挂载必要的证书目录,以便受控地修改文件。
重启组件
需要重启的组件:
kube-apiserver
:需重启以加载新证书。重启时会重新生成内部环回证书(有效期一年,仅内部使用,不能外部旋转)。kube-controller-manager
:需重启以重新加载 kubeconfig 文件。kube-scheduler
:需重启以重新加载 kubeconfig 文件。kubelet
:需重启以重新加载服务器证书。重启方式: 在对应静态 Pod 的 YAML 文件中添加注解,触发 kubelet 重新创建 Pod。重启 kubelet 时,需以 hostPID is true
挂载主机文件系统,并在容器内执行 "systemctl restart kubelet"。
自动重载:
旋转时间线
kubelet
证书:61 天时旋转(有效期 91 天)如果 kubelet
在旋转窗口期间处于异常状态,无法自动旋转证书,则需手动旋转:
运维人员必须手动续签证书。
运行以下命令手动续签证书:
例如续签 kubelet.crt
:
下载并准备 cert-renew
工具,运行:
可选地,下载 renew-all.sh
脚本以续签节点上的所有证书: