在云原生场景下,资源容量通常难以预估,而使用K8s原生的HPA,需要面对弹性滞后以及配置复杂问题。阿里云容器服务与达摩院决策智能时序团队合作推出了AHPA(Advanced Horizontal Pod Autoscaler)弹性预测,可以根据业务历史指标,自动识别弹性周期并对容量进行预测,帮你提前进行弹性规划,解决弹性滞后的问题。本文介绍AHPA的业务架构、核心优势、使用场景等相关信息。
背景信息
传统管理应用实例数有固定实例数、HPA和CronHPA三种方法。三种方法的缺点如下:
类型 | 缺点 |
---|---|
固定实例数 | 资源浪费严重,在业务低谷时仍需要全量支付资源费用。 |
HPA | 弹性触发滞后,只有达到业务洪峰才会触发弹性伸缩。 |
CronHPA |
|
- 传统HPA策略:在业务量上涨之后开始扩容,滞后的资源供给不能及时补充业务需求。
- 有预测功能的HPA:根据历史Pod的Ready Time以及历史Metrics自动学习规律,在业务量上涨之前的一个Ready Time开始扩容。当业务量上涨时Pod已提前准备,可以及时供给资源。

业务架构

- 丰富的数据指标:支持包括CPU、GPU、Memory、QPS、RT以及外部指标等。
- 稳定性保障:AHPA的弹性逻辑基于主动预测、被动兜底的策略,并结合降级保护,保证了资源的稳定性。
- 主动预测:根据历史指标预测出未来一段时间的趋势结果,适用于周期性的应用。
- 被动预测:实时预测。针对突发流量场景,通过被动预测实时准备资源。
- 降级保护:支持配置多个时间区间范围最大、最小值。
- 多种伸缩方式:AHPA支持伸缩方式包括Knative、HPA以及Deployment:
- Knative:解决Serverless应用场景下,基于并发数、QPS或RT弹性冷启动的问题。
- HPA:简化HPA弹性策略配置,降低用户使用弹性的门槛,解决使用HPA面临的弹性滞后问题。
- Deployment:直接使用Deployment,自动扩缩容。
核心优势
- 更快:毫秒级预测,秒级弹性。
- 更准:复杂周期识别率95%以上,主动预测和被动预测相结合。
- 更稳: 支持分钟级边界保护配置。
适用场景
- 有明显周期性场景。例如直播、在线教育、游戏服务场景等。
- 固定实例数+弹性兜底。例如常态业务下应对突发流量等。
- 推荐实例数配置场景。提供标准K8s API获取预测结果,常用于与自身业务平台进行集成。
使用说明
- 部署并使用AHPA,请参见部署AHPA。
- 基于GPU指标实现AHPA弹性预测,请参见基于GPU指标实现AHPA弹性预测。
- 在Knative中使用AHPA弹性预测,请参见在Knative中使用AHPA弹性预测。
- 关于如何使用AHPA解决弹性滞后问题,请参见如何使用AHPA解决弹性滞后问题。
- 关于AHPA弹性预测的最佳实践,请参见AHPA弹性预测最佳实践。
- 阿里云与达摩院合作的AHPA弹性预测论文,已被顶会ICDE录用,详情请参见ICDE 2022。