2. K8s集群生命周期基础:集群创建、升级、扩缩容、销毁的标准流程与关键节点
Kubernetes集群的生命周期管理是平台运维的基石。本章将围绕集群从“生”到“死”的四个核心阶段——创建、升级、扩缩容、销毁,梳理标准操作流程与必须关注的关键节点。理解这些基础流程,是后续利用Helm治理配置漂移的前提。
2.1 集群创建:从零到可调度
集群创建不仅仅是运行 kubeadm init 或点击云控制台按钮,它涉及基础设施、控制平面、工作节点、网络与存储的完整编排。
关键原则: 创建阶段即应引入“基础设施即代码”(IaC)与版本控制,避免后续配置漂移。
标准创建流程
- 基础设施准备: 规划网络CIDR、节点规格、操作系统镜像、安全组规则。
- 控制平面初始化: 部署etcd集群、API Server、Controller Manager、Scheduler。
- 工作节点加入: 节点认证、kubelet配置、容器运行时(containerd)就绪。
- 网络插件安装: 部署CNI插件(如Calico、Cilium),确保Pod网络互通。
- 附加组件部署: CoreDNS、Metrics Server、Ingress Controller、存储类(StorageClass)。
- 集群验证: 运行
kubectl get nodes、部署测试Pod、检查集群健康状态。
关键节点清单
| 阶段 | 关键节点 | 常见风险 |
|---|---|---|
| 基础设施 | 网络CIDR不重叠、节点SSH密钥分发 | Pod网段与VPC网段冲突 |
| 控制平面 | etcd集群成员健康、API Server证书有效期 | 证书过期导致集群不可用 |
| 节点加入 | kubelet引导令牌(Bootstrap )有效期 | 令牌过期导致节点无法加入 |
| 网络插件 | CNI DaemonSet Pod运行状态、网络策略生效 | Pod间网络不通 |
2.2 集群升级:版本演进与安全合规
Kubernetes版本迭代频繁,安全补丁与功能更新要求集群必须保持版本合规。升级的核心挑战在于控制平面与节点版本偏差以及工作负载兼容性。
版本偏差策略: kube-apiserver 版本必须 ≥ kube-controller-manager / kube-scheduler / kubelet 版本。kubelet 版本不能比 API Server 版本低超过两个次要版本(n-2)。
标准升级流程
- 前置检查: 确认当前集群版本、目标版本、API弃用资源清单、备份etcd快照。
- 控制平面升级: 逐节点升级(或滚动升级)API Server → Controller Manager → Scheduler → etcd。
- 工作节点升级: 节点排水(drain)→ 升级kubelet与kube-proxy → 节点恢复调度(uncordon)。
- 后置验证: 检查集群组件版本、运行
kubectl version、验证核心工作负载健康。
关键节点对比
| 阶段 | 关键节点 | 检查命令 / 工具 |
|---|---|---|
| 前置检查 | API弃用资源、etcd快照完整性 | kubectl convert、etcdctl snapshot save |
| 控制平面 | API Server版本升级、etcd成员健康 | kubeadm upgrade plan |
| 工作节点 | Pod中断预算(PDB)、节点排水 | kubectl drain、kubectl get pdb |
| 后置验证 | 集群组件版本、节点版本一致性 | kubectl get nodes -o wide |
2.3 集群扩缩容:弹性与成本
扩缩容分为节点级(增加/减少工作节点)和控制平面级(高可用场景)。节点级扩缩容通常依赖Cluster Autoscaler或云厂商自动伸缩组。
最佳实践: 节点扩缩容应与Pod资源请求(Requests)和限制(Limits)联动,避免节点资源碎片化。
标准扩缩容流程
- 触发条件: 集群资源不足(CPU/Memory)或利用率过低。
- 节点池调整: 修改节点池期望实例数或触发Cluster Autoscaler。
- 节点初始化: 新节点自动加入集群,kubelet注册,CNI配置。
- Pod调度: Pending状态的Pod被调度到新节点。
- 缩容前保护: 节点排水、PDB检查、驱逐Pod。
扩缩容关键指标
| 指标 | 说明 | 建议阈值 |
|---|---|---|
| 节点CPU利用率 | 触发扩容的CPU平均利用率 | > 70% |
| 节点内存利用率 | 触发扩容的内存平均利用率 | > 75% |
| Pod Pending数量 | 因资源不足Pending的Pod数 | > 0 持续5分钟 |
| 缩容冷却时间 | 缩容后避免频繁震荡的等待时间 | 10-15分钟 |
2.4 集群销毁:安全下线与数据清理
集群销毁是生命周期中最容易被忽视的阶段。不规范销毁可能导致云资源残留、数据泄露或成本持续产生。
安全红线: 销毁前必须确认所有持久化数据(PVC、etcd快照、日志)已备份或迁移,且负载已完全迁移。
标准销毁流程
- 负载迁移: 将工作负载迁移至其他集群或环境,确认流量已切换。
- 数据备份: 导出etcd快照、PVC数据、ConfigMap/Secret清单。
- 资源清理: 删除所有工作负载、PVC、Service、Ingress、Namespace。
- 节点下线: 节点排水后从集群中移除,释放云资源(虚拟机、磁盘、负载均衡器)。
- 控制平面销毁: 删除API Server、etcd实例,释放关联资源。
- 最终确认: 检查云控制台/API,确保无残留资源。
销毁前检查清单
| 检查项 | 验证方式 | 状态 |
|---|---|---|
| 工作负载已迁移 | 确认目标集群流量正常 | ✅ 必须 |
| etcd快照已导出 | 检查快照文件完整性 | ✅ 必须 |
| PVC数据已备份 | 确认备份工具(Velero)完成 | ✅ 必须 |
| 云资源已释放 | 云控制台无残留实例/磁盘/LB | ✅ 必须 |
| DNS记录已清理 | 检查域名解析记录 | ✅ 建议 |
2.5 关键节点总结与配置漂移关联
集群生命周期的每个阶段都存在配置漂移的风险。下表总结了各阶段最易产生漂移的关键节点,以及Helm在其中的治理作用。
| 生命周期阶段 | 易漂移节点 | Helm治理作用 |
|---|---|---|
| 创建 | CNI版本、附加组件配置、节点标签 | Helm Chart管理附加组件,确保版本一致 |
| 升级 | API弃用资源、kubelet配置、RBAC规则 | Helm Rollback快速回退,helm diff审计变更 |
| 扩缩容 | 节点污点(Taints)、资源配额、PodDisruptionBudget | Helm Values管理节点池配置,避免手动修改 |
| 销毁 | PVC残留、Helm Release未清理、云资源残留 | helm uninstall 清理Release,结合IaC清理云资源 |
核心结论: 集群生命周期管理不是一次性操作,而是持续治理的过程。每个阶段的标准流程都应包含“配置审计”环节,确保集群状态与Git仓库中的声明式配置完全一致。Helm作为K8s的包管理器,在升级、回滚、配置对比方面提供了天然的工具链支持。