Kubernetes Kubelet 证书自动续签方案
在 Kubernetes 集群运维中,证书管理是保障安全的关键环节。K8s 组件证书主要分为两套:一套用于组件间通信(如 apiserver、etcd),另一套用于客户端认证(如 kubelet)。按角色划分,管理节点和工作节点的证书来源和有效期策略有所不同。
证书体系与过期风险
1. 证书分类与位置
- 管理节点:kubeadm 部署时自动生成;二进制部署通常由 cfssl 或 openssl 生成。
- 工作节点:主要是 kubelet 连接 apiserver 所需的客户端证书。该证书由 controller-manager 自动颁发,默认有效期为一年。
如果证书到期,kubelet 将无法使用过期证书连接 apiserver,导致节点状态异常,日志中会出现 x509: certificate has expired or is not yet valid 错误。这是运维中容易忽略的隐患。
2. 不同部署方式的差异
- kubeadm 部署:证书统一存放在
/etc/kubernetes/pki/。默认有效期较短,需关注续签。 - 二进制部署:证书路径灵活(如
/opt/kubernetes/ssl/),管理员可自定义 CA 有效期(如 5 年或 10 年),但需手动维护签发流程。
无论哪种方式,管理节点上的核心组件(apiserver、controller-manager、scheduler)都需要配置相应的证书进行 HTTPS 通信。例如,apiserver 访问 etcd 时需携带 etcd 的 client 证书;同一机器上本地可通过 8080 端口非安全访问,对外则通过 6443 端口配合证书访问。
检查证书过期时间
在使用 kubeadm 部署的集群中,可以通过以下命令查看各证书的剩余有效期:
kubeadm alpha certs check-expiration
输出示例如下:
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY
admin.conf Nov 15, 2021 06:56 UTC 263d no
apiserver Nov 15, 2021 06:56 UTC 263d


