集群升级不是只替换 kubelet 版本。API、CNI、CSI、Ingress、监控组件和业务清单都可能受影响,必须分层验证。
升级前
- 阅读目标版本 release notes 和已知问题
- 扫描废弃 API,升级 CRD 与客户端
- 验证 etcd 快照恢复流程
- 检查 CNI、CSI、Ingress 和 autoscaler 兼容矩阵
- 确认节点可逐批驱逐且容量充足
kubectl get --raw /metrics | grep apiserver_requested_deprecated_apis
kubectl api-resources
kubectl get pdb -A
分阶段执行
先升级非生产环境,再升级控制面和少量工作节点。每个阶段都观察 API 错误率、调度延迟、DNS、网络、存储挂载和关键业务 SLI。
明确回滚边界
控制面数据格式和 etcd 变更可能限制直接降级。开始前要明确哪些步骤可回滚、哪些只能前进修复,以及快照恢复需要多长时间。
升级后
运行节点重建、Pod 驱逐、卷挂载和网络策略测试,清理旧版本兼容参数。至少观察一个业务高峰后再宣布完成。