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根据实际负载调整副本数量,两者通过资源规格的“锚点”形成闭环。

HPA与VPA协同工作架构图 HPA 与 VPA 协同工作架构 用户流量 / 业务负载 HPA(水平Pod自动扩缩) 指标:CPU / 自定义指标 / 外部指标 Deployment / StatefulSet Pod 副本集(N个) HPA 控制副本数量 Pod 实例 CPU Request: 500m Memory Request: 512Mi VPA(垂直Pod自动扩缩) 推荐资源规格:CPU 800m / Mem 1Gi 协同闭环 VPA 优化 Pod 规格 → HPA 基于新规格扩缩副本

1.4 课程目标与学习路径

本课程旨在帮助SRE和平台工程师掌握一套可落地、可度量的K8s容量调优方法论。完成学习后,你将能够:

  1. 独立部署并配置HPA与VPA,理解其内部工作原理与指标采集链路。
  2. 设计HPA+VPA协同策略,避免资源震荡与冲突,实现“规格合理、副本弹性”。
  3. 建立容量监控与告警体系,基于Metrics Server、Prometheus等工具持续优化。
  4. 应对生产环境典型场景:突发流量、有状态服务垂直扩容、成本敏感型集群。

学习路径分为四个阶段:

阶段 章节范围 核心产出
基础篇 第1-5章 理解HPA/VPA原理,完成单组件部署与验证
进阶篇 第6-12章 掌握协同配置、指标定制、冲突避免策略
实战篇 第13-22章 基于真实业务场景完成容量调优项目
运维篇 第23-30章 监控大盘、成本分析、混沌工程与持续优化
前置要求: 本课程假设你已具备K8s基础操作能力(kubectl、YAML编写、Pod/Deployment概念),并拥有一个可实验的K8s集群(推荐1.24+版本)。如果你对K8s资源模型尚不熟悉,建议先学习官方入门教程。
课程学习路径流程图 课程学习路径(四阶段递进) 基础篇 第1-5章 HPA/VPA 原理与部署 进阶篇 第6-12章 协同策略与指标定制 实战篇 第13-22章 真实场景容量调优 运维篇 第23-30章 监控与持续优化 学习建议 每阶段完成后完成对应实验,不要跳跃 推荐使用 kind / minikube 搭建本地实验环境

1.5 本章小结