Kubernetes 证书
Kubernetes 证书是集群上的 Kubernetes 组件之间进行网络通信时,用于验证彼此身份的证明。
查看证书
当集群已部署了监控组件,且监控组件运行正常时,可在 平台证书管理 页面中查看集群的 Kubernetes 证书的信息。
提示:证书即将到期或已过期时,都会触发告警,且会使用平台的默认通知策略(cpaas-admin-notification,平台部署时手动创建)向通知对象发送告警消息。同时,可在平台的 运维中心 > 告警 页面,查看详细的告警信息。
Kubernetes 证书 | 说明 |
---|---|
签发方式 | 集群部署时,通过 kubeadm 生成或手动生成。 |
过期影响 | 证书过期将导致 Kubernetes 功能不可用,例如:无法通过 kubectl 命令或 API 与集群的 API Server 通讯。常见的报错信息如下:Unable to connect to the server: x509: certificate has expired or is not yet valid 。 |
即将到期 | 证书有效期小于 30 天时,提示证书即将到期。 |
自动轮换机制 | 证书有效期小于 30 天时,平台会以 5 分钟/次 的频率尝试轮换 Kubernetes 证书。在证书轮换成功之前,证书即将到期的告警策略会持续处于 告警 状态。若告警长时间未恢复 正常,请及时联系我们的运维工程师获得支持。 |
所在路径及名称 | 签发时长 | 到期更新方式 |
---|---|---|
/etc/kubernetes/pki/apiserver.crt |
10 年 | 自动轮换 |
/etc/kubernetes/pki/apiserver-kubelet-client.crt |
10 年 | 自动轮换 |
/etc/kubernetes/pki/apiserver-etcd-client.crt |
10 年 | 自动轮换 |
/etc/kubernetes/pki/front-proxy-client.crt |
10 年 | 自动轮换 |
/etc/kubernetes/pki/etcd/healthcheck-client.crt |
10 年 | 自动轮换 |
/etc/kubernetes/pki/etcd/peer.crt |
10 年 | 自动轮换 |
/etc/kubernetes/pki/etcd/server.crt |
10 年 | 自动轮换 |
/etc/kubernetes/admin.conf |
10 年 | 自动轮换 |
/etc/kubernetes/controller-manager.conf |
10 年 | 自动轮换 |
/etc/kubernetes/scheduler.conf |
10 年 | 自动轮换 |
/etc/kubernetes/pki/ca.crt |
10 年 | 不支持更新 |
/etc/kubernetes/pki/front-proxy-ca.crt |
10 年 | 不支持更新 |
/etc/kubernetes/pki/etcd/ca.crt |
10 年 | 不支持更新 |
/etc/kubernetes/kubelet.conf |
10 年 | 自动轮换 |
/etc/kubernetes/pki/oidc-ca.crt |
10 年 | 不支持更新 |
更新自建业务集群的 Kubernetes 证书有效期
平台中 自建业务集群 上的 Kubernetes 证书的有效期默认为 10 年,当证书过期或需要调整有效期时,可参考本文内容,手动更新证书的有效期。
说明:
-
通过本文提供的方案无法更新以下证书。以下证书的默认签发时长为 10 年,如需更新有效期,请联系技术支持。
-
/etc/kubernetes/pki/ca.crt
-
/etc/kubernetes/pki/front-proxy-ca.crt
-
/etc/kubernetes/pki/etcd/ca.crt
-
/etc/kubernetes/pki/oidc-ca.crt
-
-
仅需更新集群下所有控制节点上的 Kubernetes 证书,计算节点上的证书到期后会自动轮换。
-
更新时,支持设置 Kubernetes 证书的有效期,最长有效期不可超过 3650 天。
操作步骤
-
下载 脚本(gen-certs.sh) (右键单击该链接,选择
链接存储为…
)至本地。 -
将脚本拷贝至待更新证书集群的 所有控制节点 的
/root/
目录下。 -
逐个登录集群的控制节点,选择执行对应的脚本,更新证书的有效期。
-
容器运行时为 Docker 时,执行以下脚本:
export DAYS="3650" # 证书更新后的有效期,值不可大于 3650 bash gen-certs.sh master <节点 IP> # 需要输入当前控制节点的 IP # 重启节点上由静态 Pod 管理的容器 master="apiserver controller-manager scheduler" for c in ${master}; do docker ps | grep "k8s_kube-${c}_" | awk '{print $1}' | xargs docker restart done
-
容器运行时为 Containerd 时,执行以下脚本:
export DAYS="3650" bash gen-certs.sh master <节点 IP> # 需要输入当前控制节点的 IP # 重启节点上由静态 Pod 管理的容器 master="kube-apiserver kube-controller-manager kube-scheduler" for c in ${master}; do crictl ps | grep "$c" | awk '{print $1}'| xargs crictl stop crictl ps -a | grep "$c" | awk '{print $1}'| xargs crictl rm done
-
-
分别在控制节点上,选择并执行对应的脚本,验证证书是否更新成功,集群功能是否正常。
-
集群的 Kubernetes 版本低于 1.21 时,执行以下脚本:
kubeadm alpha certs check-expiration
-
集群的 Kubernetes 版本为 1.21 或高于 1.21 时,执行以下脚本:
kubeadm certs check-expiration
-