1. 课程导论:K8s证书体系概述、证书轮换的必要性、节点通信兼容性问题的常见场景
1.1 Kubernetes 证书体系概述
Kubernetes 集群的安全通信建立在 双向 TLS(mTLS) 证书体系之上。集群内所有组件之间的通信——从 kube-apiserver 到 kubelet、从 kube-controller-manager 到 etcd、从 kube-scheduler 到 kube-apiserver——都依赖 X.509 证书进行身份验证和加密。
K8s 证书体系主要分为以下三类:
| 证书类别 | 签发对象 | 典型用途 | 默认有效期 |
|---|---|---|---|
| CA 证书 | 集群根 CA | 签发所有其他组件证书,建立信任链 | 10 年 |
| API Server 证书 | kube-apiserver | 对外暴露 HTTPS 端点,客户端验证服务端身份 | 1 年 |
| 节点/组件证书 | kubelet、kube-controller-manager、kube-scheduler、kube-proxy | 组件间 mTLS 双向认证 | 1 年 |
kubeadm 部署时,CA 证书有效期 10 年,而组件证书有效期仅 1 年。这意味着每年都需要进行证书轮换,否则集群将面临通信中断风险。
证书在集群中的分布路径如下:
- 控制平面节点:
/etc/kubernetes/pki/目录存放 CA 证书、API Server 证书、etcd 证书等。 - 工作节点:
/var/lib/kubelet/pki/目录存放 kubelet 客户端证书和服务器证书。 - kubeconfig 文件:
/etc/kubernetes/admin.conf、kubelet.conf等文件中内嵌客户端证书。
1.2 证书轮换的必要性
证书轮换是 K8s 集群运维中不可回避的例行操作。以下四个核心原因决定了证书轮换的强制性:
- 证书过期风险:K8s 组件证书默认有效期 1 年,过期后组件间 mTLS 握手失败,导致集群功能瘫痪。
- 安全合规要求:企业安全策略通常要求证书有效期不超过 1 年,部分金融或政府行业要求更短(90 天或 180 天)。
- 密钥泄露补救:当私钥泄露或怀疑泄露时,必须立即轮换证书以切断攻击路径。
- 集群版本升级:K8s 版本升级过程中,证书签名算法或证书组织字段可能发生变化,需要同步轮换。
证书轮换的典型触发场景包括:
| 触发场景 | 紧急程度 | 影响范围 | 建议响应时间 |
|---|---|---|---|
| 证书已过期 | P0 紧急 | 全集群 | 立即处理 |
| 证书 30 天内到期 | P1 高 | 全集群 | 1 周内 |
| 私钥泄露 | P0 紧急 | 受影响组件 | 立即处理 |
| 集群版本升级 | P2 中 | 全集群 | 随版本升级窗口 |
| 合规审计要求 | P3 低 | 全集群 | 按审计周期 |
1.3 节点通信兼容性问题的常见场景
证书轮换过程中,最容易引发故障的环节是 节点间通信兼容性。以下四个场景是生产环境中最高频的兼容性问题:
场景一:新旧证书交替期间的握手失败
当 kube-apiserver 先完成证书轮换,而 kubelet 尚未轮换时,kubelet 使用旧证书连接 API Server。如果 API Server 的 CA 信任链已更新,旧证书可能被拒绝,导致 kubelet 无法注册节点状态。
Unauthorized: x509: certificate signed by unknown authority
场景二:kubeconfig 中内嵌证书与节点证书不一致
kubelet 的 kubelet.conf 文件中内嵌了客户端证书。如果只轮换了节点上的证书文件,但未更新 kubeconfig 中的证书内容,kubelet 将使用旧证书发起请求,导致认证失败。
场景三:etcd 证书与 API Server 证书不匹配
etcd 集群使用独立的证书体系。当 API Server 证书轮换后,如果 etcd 的客户端证书信任列表未同步更新,API Server 将无法与 etcd 建立连接,导致集群控制平面不可用。
场景四:多版本节点共存时的签名算法兼容性
在集群升级过程中,可能存在 K8s 1.23 和 1.25 版本的节点共存。不同版本的 K8s 对证书签名算法(如 SHA-1 vs SHA-256)或证书扩展字段(如 SAN)的要求不同,轮换后的证书可能不被旧版本节点识别。
1.4 课程学习路径
本课程将按照以下路径逐步深入证书轮换与节点通信兼容性排查:
- 第 2-5 章:证书体系深度解析——CA 证书、组件证书、kubeconfig 证书、etcd 证书的详细结构与轮换方法。
- 第 6-10 章:节点通信机制——kubelet 与 API Server 的 mTLS 握手流程、证书验证链路、常见故障模式。
- 第 11-20 章:兼容性排查实战——证书签名算法、SAN 字段、证书组织字段、版本差异导致的兼容性问题及解决方案。
- 第 21-25 章:自动化轮换工具——
kubeadm certs renew、cert-manager、自定义轮换脚本的最佳实践。 - 第 26-30 章:生产环境案例——大型集群证书轮换方案设计、回退策略、监控告警配置。
kind 或 minikube),跟随课程内容手动执行证书轮换操作,观察节点通信状态变化,加深对兼容性问题的理解。