AHPA:开启 Kubernetes 弹性预测之门
简介:阿里巴巴云原生团队和阿里达摩院决策智能时序团队合作开发 AHPA 弹性预测产品,该产品主要出发点是基于检测到的周期做“定时规划”,通过规划实现提前扩容的目的,在保证业务稳定的情况下,让你真正实现按需使用。
作者:元毅、子白
导读
在云原生容器时代,用户需要面对不同的业务场景:周期性的业务,Serverless 按需使用等。在使用自动弹性中, 会发现这样或那样的问题,其中最需要关注的是弹性滞后、冷启动问题。阿里巴巴云原生团队和阿里达摩院决策智能时序团队合作开发 AHPA 弹性预测产品,该产品主要出发点是基于检测到的周期做“定时规划”,通过规划实现提前扩容的目的,在保证业务稳定的情况下,让你真正实现按需使用。
背景
用户对云弹性能力的期望越来越高,这个期望主要来自两方面。一是云原生概念的崛起,从 VM 时代到了容器时代,云的使用模式正在发生变化。二是新型业务模式的崛起,这些崛起的新型业务模式在设计之初就是基于云来建构的,天然就有对弹性的诉求。
有了云,用户不再需要自己从物理机、机房搭建基础设施,云给用户提供了非常弹性的基础设施。云的最大优势就是可以给用户提供弹性的资源供给,特别是到了云原生时代,用户对弹性的诉求也越来越强烈。弹性需求强度在 VM 时代还是人工操作分钟级别的,在容器时代,已经达到秒级的要求,用户面对不同的业务场景,对云的期望和要求也正在发生变化:
- 周期性的业务场景:新型业务比如直播、在线教育和游戏,这些业务有一个很大的共同点就是有非常明显的周期性,这种周期性促使客户思考面向弹性的业务架构。再加上云原生的理念很自然的就想到按需弹起一批服务起来,用完就释放。
- Serverless 的到来:Serverless 的核心理念是按需使用,自动弹性。用户不需要容量规划。但当你真正开始使用 Serverless 的时候,会发现这样或那样的问题,其中最需要关注的是弹性滞后、冷启动问题。对于响应时延敏感的业务,这是不可接受的。
那么面对上面的场景,当前 Kubernetes 中现有的弹性方案是否可以解呢?
传统弹性方案面临的问题
一般在 Kubernetes 中管理应用实例数有三种方式:固定实例数、HPA 和 CronHPA 。使用最多的是固定实例数,固定实例数最大的问题就是在业务波谷时造成很明显的资源浪费。为了解决资源浪费的问题所以有了 HPA,但 HPA 的弹性触发是滞后的,这就导致资源的供给也会滞后,资源不能及时供给可能会导致业务稳定性下降。CronHPA 可以定时伸缩,看起来可以解决弹性滞后的问题,但具体定时粒度有多细、业务量有变化时需要频繁地手动调节定时弹性策略吗?如果这样做,这就会带来非常繁重的运维复杂度,也很容易出错。
AHPA 弹性预测
AHPA(Advanced Horizontal Pod Autoscaler)弹性预测主要出发点是基于检测到的周期做“定时规划”,通过规划实现提前扩容的目的。但既然是规划就会有疏漏,所以需要对规划的实例数有一个实时调整的能力。所以本方案有两个弹性策略:主动预测和被动预测。主动预测基于达摩院 RobustPeriod 算法[1] 识别周期长度然后利用RobustSTL 算法[2] 提起出周期性趋势,主动预测下个周期应用的实例数量;被动预测基于应用实时数据设定实例数量,可以很好的应对突发流量。此外,AHPA 还增加了兜底保护策略,用户可以设置实例数量的上下界。AHPA 算法中最终生效的实例数是主动预测、被动预测及兜底策略中的最大值。
架构
弹性首先是要在业务稳定的情况下进行的,弹性伸缩的核心目的不仅是帮用户节省成本,更是增强业务的整体稳定性、免运维能力和构建核心竞争力。AHPA 架构设计的基本原则:
- 稳定性:保证用户服务稳定的情况下进行弹性伸缩
- 免运维:不给用户增加额外的运维负担,包括:不在用户侧增加新的 Controller、Autoscaler 配置语义比 HPA 更清晰
- 面向 Serverless:以应用为中心,面向应用维度的设计,用户无需关心实例个数的配置,按需使用、自动弹性。
架构如下:


- 丰富的数据指标:支持包括 CPU、Memory、QPS、RT 以及外部指标等
- 稳定性保障:AHPA 的弹性逻辑基于主动预热、被动兜底的策略,并结合降级保护,保证了资源稳定。
- 主动预测:根据历史预测出未来一段时间的趋势结果,适用于周期性的应用。
- 被动预测:实时预测。针对突发流量场景,通过被动预测实时准备资源。
- 降级保护:支持配置多个时间区间范围最大、最小实例。
- 多种伸缩方式:AHPA 支持伸缩方式包括 Knative、HPA 以及 Deployment:
- Knative:解决 Serverless 应用场景下,基于并发数/QPS/RT 弹性冷启动的问题
- HPA:简化 HPA 弹性策略配置,降低用户使用弹性的门槛,解决使用 HPA 面临的冷启动的问题
- Deployment:直接使用 Deployment,自动扩缩容
适应场景
AHPA 适应场景包括:
- 有明显周期性场景。如直播、在线教育、游戏服务场景等
- 固定实例数+弹性兜底。如常态业务下应对突发流量等
- 推荐实例数配置场景
预测效果
开启 AHPA 弹性后,我们提供可视化页面,用于查看 AHPA 效果。下面是一个基于 CPU 指标进行预测的示例(与使用 HPA 比较):
说明:
- Predict CPU Oberserver:蓝色表示 HPA 实际的 CPU 使用量,绿色表示预测出来的 CPU 使用量。绿色曲线大于蓝色,表明通过预测给出的容量是足够的。

- Predict POD Oberserver:蓝色表示使用 HPA 实际的扩所容 Pod 数,绿色表示预测出来的扩所容 Pod 数,绿色曲线小于蓝色,表明通过预测弹性的 Pod 数更低。
- 周期性:根据历史 7 天的数据,通过预测算法检测到该应用具备周期性。
结论:预测结果表明,弹性预测趋势符合预期。
邀测试用
点击此处查看阿里云容器服务 AHPA 弹性预测产品文档详情。当前 AHPA 已开启用户邀测,欢迎感兴趣的用户点击文档中“提交工单”位置申请白名单,期待您的试用及反馈。
参考文献
[1] (阿里达摩院决策智能时序团队) Qingsong Wen, Kai He, Liang Sun, Yingying Zhang, Min Ke, and Huan Xu. RobustPeriod: Robust Time-Frequency Mining for Multiple Periodicity Detection, in Proc. of 2021 ACM SIGMOD/PODS International Conference on Management of Data (SIGMOD 2021), Xi'an, China, Jun. 2021.
[2] (阿里达摩院决策智能时序团队) Qingsong Wen, Jingkun Gao, Xiaomin Song, Liang Sun, Huan Xu, Shenghuo Zhu. RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series, in Proc. of the 33rd AAAI Conference on Artificial Intelligence (AAAI 2019), 2019, pp. 5409-5416, Honolulu, Hawaii, Jan. 2019.
[3] (阿里达摩院决策智能时序团队) Qingsong Wen, Zhe Zhang, Yan Li and Liang Sun. Fast RobustSTL: Efficient and Robust Seasonal-Trend Decomposition for Time Series with Complex Patterns, in Proc. of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD 2020), San Diego, CA, Aug. 2020.
本文为阿里云原创内容,未经允许不得转载。
AHPA:开启 Kubernetes 弹性预测之门的更多相关文章
- Kubernetes 弹性伸缩全场景解读(二)- HPA 的原理与演进
前言 在上一篇文章 Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局中,我们介绍了在 Kubernetes 在处理弹性伸缩时的设计理念以及相关组件的布局,在今天这篇文章中,会为大家 ...
- Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
作者| 阿里云容器技术专家刘中巍(莫源) 导读:Kubernetes弹性伸缩系列文章为读者一一解析了各个弹性伸缩组件的相关原理和用法.本篇文章中,阿里云容器技术专家莫源将为你带来定时伸缩组件 kub ...
- Kubernetes 弹性伸缩HPA功能增强Advanced Horizontal Pod Autoscaler -介绍部署篇
背景 WHAT(做什么) Advanced Horizontal Pod Autoscaler(简称:AHPA)是kubernetes中HPA的功能增强. 在兼容原生HPA功能基础上,增加预测.执行模 ...
- Kubernetes 弹性伸缩全场景解析(三) - HPA 实践手册
在上一篇文章中,给大家介绍和剖析了 HPA 的实现原理以及演进的思路与历程.本文我们将会为大家讲解如何使用 HPA 以及一些需要注意的细节. autoscaling/v1 实践 v1 的模板可能是大家 ...
- Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性
前言 在本系列的前三篇中,我们介绍了弹性伸缩的整体布局以及HPA的一些原理,HPA的部分还遗留了一些内容需要进行详细解析.在准备这部分内容的期间,会穿插几篇弹性伸缩组件的最佳实践.今天我们要讲解的是 ...
- Kubernetes 弹性伸缩全场景解析 (一)- 概念延伸与组件布局
传统弹性伸缩的困境 弹性伸缩是Kubernetes中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划与实 ...
- Kubernetes 弹性伸缩全场景解析 (一):概念延伸与组件布局
传统弹性伸缩的困境 弹性伸缩是 Kubernetes 中被大家关注的一大亮点,在讨论相关的组件和实现方案之前.首先想先给大家扩充下弹性伸缩的边界与定义,传统意义上来讲,弹性伸缩主要解决的问题是容量规划 ...
- Kubernetes弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
前言 容器技术的发展让软件交付和运维变得更加标准化.轻量化.自动化.这使得动态调整负载的容量变成一件非常简单的事情.在kubernetes中,通常只需要修改对应的replicas数目即可完成.当负载的 ...
- ILLA Cloud: 调用 Hugging Face Inference Endpoints,开启大模型世界之门
一个月前,我们 宣布了与 ILLA Cloud 与达成的合作,ILLA Cloud 正式支持集成 Hugging Face Hub 上的 AI 模型库和其他相关功能. 今天,我们为大家带来 ILLA ...
- Effective HPA:预测未来的弹性伸缩产品
作者 胡启明,腾讯云专家工程师,专注 Kubernetes.降本增效等云原生领域,Crane 核心开发工程师,现负责成本优化开源项目 Crane 开源治理和弹性能力落地工作. 余宇飞,腾讯云专家工程师 ...
随机推荐
- 使用gradle打包springboot项目
这边整理下自己项目使用gradle打jar包的坎坷经历,使用的方式是命令行的方式 首先配置build.gradle跟我一样 plugins { id 'java' id 'org.springfram ...
- 安装YCM
安装Vundle git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim Vundle也是vim的 ...
- 关于编写GUI程序我自己的一些理解
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文发布于 2014-10-12 14:51:31 ...
- 【报错处理】npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/yarn
一.报错现象 二.报错原因 权限不够 三.解决方法 加上sudo sudo npm install -g yarn
- Django:Could not find backend 'django_redis.cache.RedisCache': cannot import name 'six'
1.报错内容: django.core.cache.backends.base.InvalidCacheBackendError: Could not find backend 'django_red ...
- 记录--npm, npx, cnpm, yarn, pnpm梭哈
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 依赖管理解决了在软件开发过程中管理和协调各种依赖项的问题,简化了开发流程,提高了项目的可靠性.可维护性和可重复性.它们帮助开发人员更高效地 ...
- C# 委托(delegate)本质理解
代码如下,很简单 namespace Delegate { class Program { delegate void SayHi(); void SayHi_1() { Console.WriteL ...
- 关于tomcat容器抛出的异常解决方案之一
1,描述 问题类型:调试信息泄露 如: 现要求:前端页面不显示调试信息. 解决方案: 替换默认的tomcat <dependency> <groupId>org.springf ...
- KingbaseES数据库运维案例之---permission denied to create "sys_catalog.xxx"
KingbaseES数据库运维案例之---permission denied to create "sys_catalog.bdsj_bdgl_test" 案例说明: 在Kin ...
- 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较
1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构,不同的数据格式适用于不同的场景.常见的数据格式包括JSON.YAML.XML.CSV等. 数据可视化 | 一个覆盖广泛主题工具的高效在线平 ...