1. 课程导论:K8s集群容量调优的重要性、HPA与VPA的定位与区别、课程目标与学习路径
1.1 为什么K8s集群容量调优是SRE的必修课
在Kubernetes生产环境中,容量管理直接决定集群的资源利用率、服务稳定性和运营成本。过度配置导致云账单飙升,配置不足则引发Pod驱逐、应用抖动甚至P0级故障。SRE团队面临的核心矛盾是:如何用最少的资源承载最大的业务负载,同时保证SLA不破线?
关键数据: 据CNCF调研,超过60%的K8s集群CPU平均利用率低于30%,而因资源不足导致的OOMKill事件占应用故障的40%以上。容量调优是降本增效的第一道防线。
容量调优的三大目标:
- 成本控制 —— 消除闲置资源,匹配实际需求曲线。
- 稳定性保障 —— 避免因突发流量导致的容器重启或限流。
- 运维自动化 —— 减少人工手动调整Request/Limit的频率。
1.2 HPA与VPA的定位与核心区别
Kubernetes提供了两种原生弹性机制:Horizontal Pod Autoscaler(HPA) 和 Vertical Pod Autoscaler(VPA)。它们解决的是不同维度的容量问题,但经常被混淆。
| 对比维度 | HPA(水平扩缩) | VPA(垂直扩缩) |
|---|---|---|
| 调整对象 | Pod副本数量 | Pod的CPU/Memory Request & Limit |
| 适用场景 | 无状态服务、可水平拆分的负载 | 有状态服务、单体应用、启动耗时的组件 |
| 扩缩速度 | 快(秒级创建/删除Pod) | 慢(需要重建Pod以应用新资源规格) |
| 资源粒度 | 集群级别(增加/减少节点负载) | Pod级别(调整单个容器的资源配额) |
| 典型风险 | 冷启动延迟、连接池震荡 | Pod重建导致连接中断、资源碎片化 |
一句话定位: HPA解决“需要多少台机器”的问题,VPA解决“每台机器需要多大规格”的问题。两者是互补关系,而非替代关系。
1.3 HPA与VPA协同工作的价值
单独使用HPA或VPA都存在盲区:
- 仅HPA: 当每个Pod的Request设置过大时,副本数无法有效增加,集群资源被浪费在“空转”的Pod上。
- 仅VPA: 当业务流量突增时,VPA需要重建Pod才能生效,无法应对瞬时高峰,且频繁重建影响可用性。
协同工作的核心思路:VPA负责为Pod推荐最优资源规格,HPA根据实际负载调整副本数量,两者通过资源规格的“锚点”形成闭环。
1.4 课程目标与学习路径
本课程旨在帮助SRE和平台工程师掌握一套可落地、可度量的K8s容量调优方法论。完成学习后,你将能够:
- 独立部署并配置HPA与VPA,理解其内部工作原理与指标采集链路。
- 设计HPA+VPA协同策略,避免资源震荡与冲突,实现“规格合理、副本弹性”。
- 建立容量监控与告警体系,基于Metrics Server、Prometheus等工具持续优化。
- 应对生产环境典型场景:突发流量、有状态服务垂直扩容、成本敏感型集群。
学习路径分为四个阶段:
| 阶段 | 章节范围 | 核心产出 |
|---|---|---|
| 基础篇 | 第1-5章 | 理解HPA/VPA原理,完成单组件部署与验证 |
| 进阶篇 | 第6-12章 | 掌握协同配置、指标定制、冲突避免策略 |
| 实战篇 | 第13-22章 | 基于真实业务场景完成容量调优项目 |
| 运维篇 | 第23-30章 | 监控大盘、成本分析、混沌工程与持续优化 |
前置要求: 本课程假设你已具备K8s基础操作能力(kubectl、YAML编写、Pod/Deployment概念),并拥有一个可实验的K8s集群(推荐1.24+版本)。如果你对K8s资源模型尚不熟悉,建议先学习官方入门教程。