典型事故

业务高峰来临,HPA 根据 CPU 拉副本;同时 VPA 建议提升 requests,导致 Pod 频繁重建。结果不是稳定,而是不断抖动。

协同原则

  1. HPA 负责“横向弹性”(副本数)。
  2. VPA 负责“纵向建议”(资源基线)。
  3. 两者不要同时直接控制同一 Deployment 的同一资源维度。

实操模式

  • 在线服务:HPA + VPA(recommendation only)。
  • 离线作业:VPA(auto) + 关闭 HPA。
  • 把 VPA 建议周期性写回 Helm values,再经灰度发布生效。

关键参数

  • HPA 目标指标建议使用自定义业务指标(QPS、队列深度),不要只盯 CPU。
  • HPA behavior 里设置 scaleDown 稳定窗口,防止“刚扩就缩”。
  • VPA 设置 minAllowed/maxAllowed,避免极端建议。

观测面板建议

  • 当前副本数与目标副本数差值。
  • Pod 重建频率与重建原因。
  • requests 利用率分布(而非平均值)。

小结

HPA 与 VPA 本质上是两个控制器。让它们协同的关键,不是“都开”,而是“职责分离 + 变更节流 + 可观测闭环”。