在云原生场景下,资源容量通常难以预估,而使用原生Kubernetes的HPA则需要面对弹性滞后以及配置复杂问题。AHPA(Advanced Horizontal Pod Autoscaler)弹性预测可以根据业务历史指标,自动识别弹性周期并对容量进行预测,帮您提前进行弹性规划,解决弹性滞后的问题。本文介绍AHPA的业务架构、核心优势、使用场景等相关信息。
背景信息
传统管理应用实例数有固定实例数、HPA和CronHPA三种方法。三种方法的缺点如下:
类型 | 缺点 |
固定实例数 | 资源浪费严重,在业务低谷时仍需要全量支付资源费用。 |
HPA | 弹性触发滞后,只有达到业务洪峰才会触发弹性伸缩。 |
CronHPA |
|
阿里云容器计算服务ACS针对上述问题,支持了AHPA弹性预测功能,以提高资源利用率和易用性。
AHPA弹性预测根据历史数据自动规划未来24小时每一分钟的应用实例数,相当于进行1440个点(一天为1440分钟)的CronHPA定时配置。如下图所示,左侧为传统HPA策略,右侧为有预测功能的HPA。
传统HPA策略:在业务量上涨之后开始扩容,滞后的资源供给不能及时补充业务需求。
有预测功能的HPA:根据Pod的历史Ready Time和Metrics自动学习规律,在业务量上涨之前的一个Ready Time开始扩容。当业务量上涨时Pod已提前准备,可以及时供给资源。
业务架构
丰富的数据指标:支持包括CPU、GPU、Memory、QPS、RT以及外部指标等。
稳定性保障:AHPA的弹性逻辑基于主动预测、被动兜底的策略,并结合降级保护,保证了资源的稳定性。
主动预测:根据历史指标预测出未来一段时间的趋势结果,适用于周期性的应用。
被动预测:实时预测。针对突发流量场景,通过被动预测实时准备资源。
降级保护:支持配置多个时间区间范围最大、最小值。
多种伸缩方式:AHPA支持伸缩方式包括HPA和Deployment:
HPA:简化HPA弹性策略配置,降低用户使用弹性的门槛,解决使用HPA面临的弹性滞后问题。
Deployment:直接使用Deployment,自动扩缩容。
核心优势
更快:毫秒级预测,秒级弹性。
更准:复杂周期识别率95%以上,主动预测和被动预测相结合。
更稳定:支持分钟级边界保护配置。
适用场景
有明显周期性场景。例如直播、在线教育、游戏服务场景等。
固定实例数+弹性兜底。例如常态业务下应对突发流量等。
推荐实例数配置场景。提供标准K8s API获取预测结果,常用于与自身业务平台进行集成。
相关文档
关于如何在ACS中部署并使用AHPA,请参见部署AHPA并进行资源智能预测。
关于如何使用AHPA解决弹性滞后问题,请参见如何使用AHPA解决弹性滞后问题?。
关于AHPA弹性预测的最佳实践,请参见AHPA弹性预测最佳实践。
阿里云与达摩院合作的AHPA弹性预测论文,已被顶会ICDE录用,详情请参见ICDE 2022。