HPA 如何工作
Kubernetes 的 HorizontalPodAutoscaler(HPA)会周期性读取指标,并调整 Deployment、StatefulSet 等可扩缩对象的副本数。常见指标包括 CPU、内存,也可以接入请求速率、队列长度或业务自定义指标。横向扩容增加 Pod 数量,缩容则释放空闲资源。
只使用 CPU 并不总是合理。计算密集型接口适合 CPU 指标,而消息消费服务往往更应关注积压量;受外部依赖限制的服务则要同时观察延迟和错误率。autoscaling/v2 支持多指标,控制器会计算各指标建议的副本数并采用较大的结果。
避免扩缩容抖动
首先应为容器设置合理的 requests,否则 CPU 利用率缺少可靠基准。其次要确保就绪探针能准确反映实例是否可接流量。通过 behavior 中的稳定窗口和扩缩策略,可以限制单位时间内增加或减少的副本数量,防止短暂峰值造成反复震荡。
HPA 解决的是工作负载副本问题;当节点容量不足时,还要配合集群节点自动扩容。上线前应做压测,验证指标采集延迟、扩容速度、冷启动时间和最大副本限制,并为异常流量保留限流与降级能力。
参考资料:https://kubernetes.io/docs/concepts/workloads/autoscaling/horizontal-pod-autoscale/