1. 课程导论:集群升级后证书轮换的背景、重要性及课程目标
1.1 为什么集群升级后必须关注证书轮换?
Kubernetes 集群的每一次版本升级,尤其是控制面组件的更新,都会触发一系列证书的自动或手动轮换。kubelet 作为集群中最重要的节点代理,其与 API Server 之间的 TLS 通信完全依赖于有效的客户端证书。如果证书轮换后 kubelet 未能及时同步新证书,或者节点间的通信验证失败,将直接导致节点状态异常、Pod 调度失败、监控断连等严重生产事故。
⚠️ 常见生产故障: 某金融企业在 1.23→1.25 升级后,因 kubelet 证书轮换未触发,导致 30% 的节点在 24 小时内进入
NotReady 状态,核心支付链路中断 2 小时。事后分析发现,证书轮换作业的同步机制与节点通信验证流程存在盲区。
1.2 证书轮换的核心背景
Kubernetes 证书体系主要分为三类,升级后轮换策略各不相同:
| 证书类型 | 签发方 | 升级后轮换方式 | kubelet 影响 |
|---|---|---|---|
| kubelet 客户端证书 | 集群 CA / kube-controller-manager | 自动轮换(RotateKubeletClientCertificate 特性) |
直接影响 API Server 通信 |
| kubelet 服务端证书 | 集群 CA / 自签发 | 需手动或通过 certificate.k8s.io API 轮换 |
影响 kubelet 监听端口 TLS |
| 节点间通信证书 | 集群 CA | 随控制面升级自动更新 | 影响 Pod 到 Pod 的 mTLS |
📌 关键认知: 集群升级后,kubelet 的证书轮换并非“升级完成即自动生效”。证书的签发、分发、加载、验证存在时间窗口和状态依赖,必须通过专门的作业流程来保证同步。
1.3 证书轮换作业的同步挑战
升级后证书轮换作业面临三个核心同步问题:
- 时间同步偏差: kubelet 证书轮换依赖于
certificate-rotation控制器,该控制器在升级后可能因 leader 选举延迟而滞后。 - 节点状态不一致: 大规模集群中,不同节点的 kubelet 证书轮换进度可能相差数分钟,导致部分节点提前失效。
- 通信验证盲区: 证书轮换后,kubelet 与 API Server 的
NodeLease心跳、Pod 状态上报、Volume 挂载等通信链路需要逐条验证。
1.4 课程目标与学习路径
本课程旨在帮助 SRE 工程师系统掌握集群升级后证书轮换作业的完整流程,确保 kubelet 同步与节点通信验证的可靠性。课程结束后,学员将能够:
- 理解证书轮换机制: 掌握 kubelet 证书的自动轮换策略、触发条件及常见失败模式。
- 设计轮换作业流程: 编写可复用的证书轮换作业脚本,支持大规模集群的并行同步。
- 验证节点通信: 使用
kubectl、openssl、curl等工具验证 kubelet 与 API Server、节点间的 TLS 通信。 - 故障排查与恢复: 快速定位证书轮换失败、通信超时、证书过期等典型问题。
💡 学习建议: 建议学员在实验环境中准备一个 1.24+ 版本的集群,并提前创建证书轮换作业的 YAML 模板。本课程所有操作均可在
kind 或 minikube 本地集群中复现。
1.5 课程知识体系概览
本课程共 30 章,分为四个模块,覆盖从理论到实战的完整链路:
| 模块 | 章节范围 | 核心内容 | 实战产出 |
|---|---|---|---|
| 基础篇 | 第 1-8 章 | 证书体系、轮换机制、kubelet 通信原理 | 证书轮换作业设计文档 |
| 作业篇 | 第 9-18 章 | 轮换作业编写、同步策略、错误处理 | 可执行证书轮换作业脚本 |
| 验证篇 | 第 19-25 章 | 节点通信验证、监控告警、自动化测试 | 通信验证工具集 |
| 实战篇 | 第 26-30 章 | 大规模集群演练、故障复盘、最佳实践 | 生产级轮换 SOP |
1.6 前置知识要求
为获得最佳学习效果,建议学员具备以下基础:
- 熟悉 Kubernetes 集群的基本架构(控制面、节点、Pod 网络模型)。
- 了解 TLS/SSL 证书的基本概念(CA、证书链、私钥、CSR)。
- 能够使用
kubectl管理集群资源,具备基本的 YAML 编写能力。 - 有至少一次集群升级操作经验(如
kubeadm upgrade或托管集群升级)。
🔧 环境准备: 建议使用 Kubernetes 1.24+ 版本集群,开启
RotateKubeletClientCertificate 和 RotateKubeletServerCertificate 特性门控。推荐使用 kind 创建多节点集群进行实验。