结论:HPA(HorizontalPodAutoscaler)按指标自动调整 Deployment/StatefulSet 的副本数,公式为 期望副本数 = ceil(当前副本数 × 当前指标值 / 目标值),默认每 15s 从 metrics-server 拉取指标计算一次。

展开:指标来源三层:resource 指标(CPU/内存利用率,基于 requests 的百分比,来自 metrics-server);custom metrics(如 QPS、队列长度,来自 prometheus-adapter);external metrics(云厂商指标如消息队列积压)。v2 API 支持多指标,取各指标计算结果的最大值。实践要点:1)必须设 requests,否则 CPU 利用率算不出;2)防止抖动——v2 提供 behavior 字段配置 scaleDown 的 stabilizationWindowSeconds(默认 300s)和缩容速率限制,避免指标毛刺导致副本数震荡;3)扩容快、缩容慢是通用原则;4)HPA 扩容后应用启动需要时间,配合 readiness 和预热;5)HPA 只调副本数,节点不够时需 Cluster Autoscaler(或 Karpenter)联动扩节点,两者指标设计要避免互相干扰。易错点:HPA 与 VPA 同时作用于 CPU 指标会冲突,VPA 改 requests 会改变 HPA 的利用率基数。KEDA 是事件驱动扩缩的替代方案,适合按队列深度缩到 0。