在云原生场景下,资源容量通常难以预估,而使用Kubernetes原生的HPA时需要面对弹性滞后以及配置复杂问题。为此,ACK推出了AHPA(Advanced Horizontal Pod Autoscaler)弹性预测,支持根据业务历史指标,自动识别弹性周期并对容量进行预测,提前进行弹性规划,解决弹性滞后的问题。
背景信息
传统管理应用实例数有固定实例数、HPA和CronHPA三种方法。三种方法的缺点如下。
类型 | 缺点 |
固定实例数 | 资源浪费严重,在业务低谷时仍需要全量支付资源费用。 |
HPA | 弹性触发滞后,只有达到业务洪峰才会触发弹性伸缩。 |
CronHPA |
|
针对上述弹性方式存在的问题,ACK支持AHPA弹性预测功能,以提高资源利用率和易用性。AHPA弹性预测根据历史数据自动规划未来24小时每一分钟的应用实例数,相当于进行1440个点(一天为1440分钟)的CronHPA定时配置。如下图所示,左侧为传统HPA策略,右侧为有预测功能的HPA。
传统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。