在云原生场景下,资源容量通常难以预估,而使用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已提前准备,可以及时供给资源。

image

业务架构

image
  • 丰富的数据指标:支持包括CPU、GPU、Memory、QPS、RT以及外部指标等。

  • 稳定性保障:AHPA的弹性逻辑基于主动预测、被动兜底的策略,并结合降级保护,保证了资源的稳定性。

    • 主动预测:根据历史指标预测出未来一段时间的趋势结果,适用于周期性的应用。

    • 被动预测:实时预测。针对突发流量场景,通过被动预测实时准备资源。

  • 降级保护:支持配置多个时间区间范围最大、最小值。

  • 多种伸缩方式:AHPA支持伸缩方式包括Knative、HPA以及Deployment:

    • Knative:解决Serverless应用场景下,基于并发数、QPS或RT弹性冷启动的问题。

    • HPA:简化HPA弹性策略配置,降低用户使用弹性的门槛,解决使用HPA面临的弹性滞后问题。

    • Deployment:直接使用Deployment,自动扩缩容。

核心优势

  • 更快:毫秒级预测,秒级弹性。

  • 更准:复杂周期识别率95%以上,主动预测和被动预测相结合。

  • 更稳: 支持分钟级边界保护配置。

适用场景

  • 有明显周期性场景。例如直播、在线教育、游戏服务场景等。

  • 固定实例数+弹性兜底。例如常态业务下应对突发流量等。

  • 推荐实例数配置场景。提供标准K8s API获取预测结果,常用于与自身业务平台进行集成。

使用说明