首页 / 平台管理 / 平台证书管理 / Kubernetes 证书

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 年,当证书过期或需要调整有效期时,可参考本文内容,手动更新证书的有效期。

说明

操作步骤

  1. 下载 脚本(gen-certs.sh) (右键单击该链接,选择 链接存储为…)至本地。

  2. 将脚本拷贝至待更新证书集群的 所有控制节点/root/ 目录下。

  3. 逐个登录集群的控制节点,选择执行对应的脚本,更新证书的有效期。

    • 容器运行时为 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
  4. 分别在控制节点上,选择并执行对应的脚本,验证证书是否更新成功,集群功能是否正常。

    • 集群的 Kubernetes 版本低于 1.21 时,执行以下脚本:

      kubeadm alpha certs check-expiration
    • 集群的 Kubernetes 版本为 1.21 或高于 1.21 时,执行以下脚本:

      kubeadm certs check-expiration