在云原生场景下,资源容量通常难以预估,而使用K8s原生的HPA,需要面对弹性滞后以及配置复杂问题。阿里云容器服务与达摩院决策智能时序团队合作推出了AHPA(Advanced Horizontal Pod Autoscaler)弹性预测,可以根据业务历史指标,自动识别弹性周期并对容量进行预测,帮你提前进行弹性规划,解决弹性滞后的问题。本文介绍AHPA的业务架构、核心优势、使用场景等相关信息。

背景信息

传统管理应用实例数有固定实例数、HPA和CronHPA三种方法。三种方法的缺点如下:

类型 缺点
固定实例数 资源浪费严重,在业务低谷时仍需要全量支付资源费用。
HPA 弹性触发滞后,只有达到业务洪峰才会触发弹性伸缩。
CronHPA
  • 需要设置每个时间段的实例数。实例数过多容易造成资源浪费;实例数过少无法满足实际需求。
  • 需要根据业务变化调整定时策略,易用性较差。
针对上述弹性方式存在的问题,ACK支持AHPA弹性预测功能,以提高资源利用率和易用性。AHPA弹性预测根据历史数据自动规划未来24小时每一分钟的应用实例数,相当于进行1440个点(一天为1440分钟)的CronHPA定时配置。如下图所示,左侧为传统HPA策略,右侧为有预测功能的HPA。
  • 传统HPA策略:在业务量上涨之后开始扩容,滞后的资源供给不能及时补充业务需求。
  • 有预测功能的HPA:根据历史Pod的Ready Time以及历史Metrics自动学习规律,在业务量上涨之前的一个Ready Time开始扩容。当业务量上涨时Pod已提前准备,可以及时供给资源。
HAP与AHPA对比图

业务架构

1
  • 丰富的数据指标:支持包括CPU、GPU、Memory、QPS、RT以及外部指标等。
  • 稳定性保障:AHPA的弹性逻辑基于主动预测、被动兜底的策略,并结合降级保护,保证了资源的稳定性。
    • 主动预测:根据历史指标预测出未来一段时间的趋势结果,适用于周期性的应用。
    • 被动预测:实时预测。针对突发流量场景,通过被动预测实时准备资源。
  • 降级保护:支持配置多个时间区间范围最大、最小值。
  • 多种伸缩方式:AHPA支持伸缩方式包括Knative、HPA以及Deployment:
    • Knative:解决Serverless应用场景下,基于并发数、QPS或RT弹性冷启动的问题。
    • HPA:简化HPA弹性策略配置,降低用户使用弹性的门槛,解决使用HPA面临的弹性滞后问题。
    • Deployment:直接使用Deployment,自动扩缩容。

核心优势

  • 更快:毫秒级预测,秒级弹性。
  • 更准:复杂周期识别率95%以上,主动预测和被动预测相结合。
  • 更稳: 支持分钟级边界保护配置。

适用场景

  • 有明显周期性场景。例如直播、在线教育、游戏服务场景等。
  • 固定实例数+弹性兜底。例如常态业务下应对突发流量等。
  • 推荐实例数配置场景。提供标准K8s API获取预测结果,常用于与自身业务平台进行集成。

使用说明