AHPA 弹性预测最佳实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在云原生场景下,资源容量往往难以预估,而使用 K8s 原生的 HPA,往往要面对弹性滞后以及配置复杂问题。阿里云容器服务与达摩院决策智能时序团队合作推出的 AHPA(Advanced Horizontal Pod Autoscaler)弹性预测,可以根据业务历史指标,自动识别弹性周期并对容量进行预测,帮你提前进行弹性规划,解决弹性滞后的问题。 AHPA 如何配置才能解锁最佳使用姿势?本文给你带来 AHPA 弹性预测最佳实践

在云原生场景下,资源容量往往难以预估,而使用 K8s 原生的 HPA,往往要面对弹性滞后以及配置复杂问题。阿里云容器服务与达摩院决策智能时序团队合作推出的 AHPA(Advanced Horizontal Pod Autoscaler)弹性预测,可以根据业务历史指标,自动识别弹性周期并对容量进行预测,帮你提前进行弹性规划,解决弹性滞后的问题。 AHPA 如何配置才能解锁最佳使用姿势?本文给你带来  AHPA 弹性预测最佳实践。接下来将从如下方面展开介绍:

  • AHPA 弹性预测介绍
  • 指标源及AHPA配置参数介绍
  • 边界保护的适用情况
  • 利用降噪、算法分位数可以做哪些事情
  • 典型场景:从 HPA 转 AHPA
  • 典型场景:弹性推荐

AHPA 弹性预测介绍

为什么要做弹性预测,首先当前应用存在冷启动的问题,我们可以看一下应用启动阶段包括资源调度、拉镜像、容器创建、容器启动以及应用启动。冷启动除了要解决 IaaS 资源的分配、Kubernetes 的调度、拉镜像等问题以外还涉及到应用的启动时长。应用启动时长从毫秒到分钟级别都有。应用启动时间这完全是业务行为,在底层平台层面几乎无法控制。

此外当前通用的弹性方案面临如下问题,可用性差,无法预估容量,少了不够,多了浪费。稳定性风险弹性之后,配置固化,易用性差,配置繁琐,如定时的CronHPA, 需要评估每个时间段扩容多少,缩容多少,并且随着业务的变化需要随时进行调整。

image.png

我们思考弹性核心要解的问题:在提升资源使用率的同时,保障业务的稳定性。

那么我们如果能够根据历史数据,通过机器学习算法,提前预测未来需要多少资源,那么就可以避免上述的问题。围绕这个思路,我们需要做哪些事情呢?

首先要有历史指标数据,数据是预测的前提,然后需要预测算法,通过算法提前预测未来的需要多少资源,最后生效在工作负载上。我把他归纳为弹性预测三元组。当然我们目标是:资源提前预热、自动弹性规划、同时能够支持弹性降级,保证稳定性。

方案实现如下:

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

优势体现:

通过AHPA我们可以做到毫秒级预测、秒级弹性,对于复杂周期识别率到达95%以上,同时支持鲁棒性以及分钟级别边界保护配置。

AHPA 最佳实践配置

指标源配置

首先介绍指标源配置,这里我们通过ConfigMap配置相应的指标源,具体如下

apiVersion: v1
kind: ConfigMap
metadata:
  name: application-intelligence
  namespace: kube-system
data:
  armsUrl: https://cn-beijing.arms.aliyuncs.com:9443/api/v1/prometheus/xxx/1581204543170042/xxx/cn-beijing
  token: xxxx
  realtimesource: metric-server

参数说明:

参数

说明

推荐配置

armsUrl

历史指标配置:Promethues 数据源Url

必选

token

Promethues 数据源Token

建议配置

realtimesource

实时指标配置。支持metric-servervk

必选。在使用ASK时,可以直接使用VK

AdvancedHorizontalPodAutoscaler 配置

在 AHPA 中我们通过 AdvancedHorizontalPodAutoscaler 配置弹性策略、目标对象以及扩缩容时间边界。具体如下:

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscaler
metadata:
  name: ahpa-demo
spec:
  scaleStrategy: observer
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  maxReplicas: 100
  minReplicas: 2
  prediction:
    quantile: 95
    scaleUpForward: 180
  instanceBounds:
  - startTime: "2021-12-16 00:00:00"
    endTime: "2022-12-16 00:00:00"
    bounds:
    - cron: "* 0-8 ? * MON-FRI"
      maxReplicas: 15
      minReplicas: 4
    - cron: "* 9-15 ? * MON-FRI"
      maxReplicas: 15
      minReplicas: 10
    - cron: "* 16-23 ? * MON-FRI"
      maxReplicas: 20
      minReplicas: 15

参数说明:

参数

说明

推荐配置

scaleStrategy

弹性生效策略。目前支持:observerauto

刚上线推荐先观察(observer),再生效(auto

metrics

弹性指标,支持cpumemoryqpsrt

必选

scaleTargetRef

弹性生效工作负载:DeploymentHPAKnative

必选

prediction. quantile

预测分位数。表示业务指标实际值低于设定目标值的概率,越大表示越保守,两位小数,01

推荐范围0.90-0.99, 默认0.99

prediction.scaleUpForward

Pod冷启动时间

建议配置

instanceBounds

扩缩容时间区间边界配置

建议配置

指标预处理

由于指标数据质量参差补齐,在AHPA中我们需要对指标进行预处理,包括指标去重、指标补齐以及指标清洗。在应用启动时,往往遇到启动过程中CPU使用率比较高的现象,以java应用为例,类加载过程是比较耗CPU。这样的情况其实不是业务流量本身造成的,因此对于这类指标是不需要参与预测指标输入的,需要清洗过滤掉。因此通过指标预处理,剔除这部分预测干扰。

边界保护配置的灵活使用

在AHPA 中,可以设置不同时间段的最大值和最小值,这样即使遇到指标异常或者弹性预测不准的情况下,也能有兜底的策略。

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: AdvancedHorizontalPodAutoscaler
metadata:
  name: ahpa-demo
spec:
  maxReplicas: 100
  minReplicas: 2
  instanceBounds:
  - startTime: "2021-12-16 00:00:00"
    endTime: "2022-12-16 24:00:00"
    bounds:
    - cron: "* 0-8 ? * MON-FRI"
      maxReplicas: 15
      minReplicas: 4
    - cron: "* 9-15 ? * MON-FRI"
      maxReplicas: 15
      minReplicas: 10
    - cron: "* 16-23 ? * MON-FRI"
      maxReplicas: 20
      minReplicas: 15

除了可以进行分钟级别保护之后,利用边界保护配置,可以做到定时弹性或者资源应急准备。也就是如果在某个时间段需要大量的资源(用于突发流量应急、压测等),可以通过调整这个时间段的最小资源,保障这个时间段的资源水位。

利用分位数可以做哪些事情

在 AHPA 中可以设置预测的分位数 quantile ,这个值表示业务指标实际值低于设定目标值的概率,越大表示越保守,取值范围 0~1。越大表示越保守的意思是,值越大表示超出目标设置的数值点越少,也就意味着牺牲更多的资源。但有的业务其实超出一部分目标指标也是可以接受的,这样的情况下也是可以将这个值调低一些。默认推荐值是0.95

典型场景:从HPA转AHPA

客户痛点:当前使用 HPA, 由于应用存在冷启动的问题,导致CPU使用率无法提升。

解决方案:通过 AHPA 预测,资源预热,提升CPU使用率

上线前后使用情况对比:

CPU使用率:较上线提高 9%

•资源成本:成本节省比例 28.68%


典型场景:弹性推荐

客户痛点: 现有弹性方案无法与自身 PaaS 平台结合,期望只做规划不进行生效。

解决方案:通过 AHPA 预测未来24小时Pod实例数,给出弹性规划,不做生效。实际弹性生效由客户自身 PaaS 平台确定执行。

获取配置推荐命令:

kubectl get --raw '/apis/metrics.alibabacloud.com/v1beta1/namespaces/default/predictions/fib-deployment'

参数说明:

参数

说明

periodicity

是否周期性。0:表示无周期,1:有周期

predict_series

未来24小时预测结果,分钟级别

recommend_pod_series

当前推荐pod

小结

当前阿里云容器服务 AHPA 已产品化上线,点击此处了解产品使用详情。

目录
相关文章
|
2月前
|
人工智能 架构师 容灾
函数计算 FC:首发 GPU 极速模式,更弹性、更降本
2024 云栖大会上,函数计算 FC 为 AI 加码,首发 GPU 极速模式,让 GPU 可以更弹性、更便宜。
222 14
|
3月前
|
弹性计算 Kubernetes 算法
AHPA:Kubernetes弹性伸缩的预言家,揭秘未来资源使用的神秘面纱!
【8月更文挑战第8天】在云原生应用中,Kubernetes已成为部署标准。面对不断扩大的集群与应用规模,有效资源管理和弹性伸缩成为关键。AHPA(自适应历史感知预测算法)作为先进的预测技术,通过分析历史数据预测资源需求并自动调整Kubernetes资源分配。以一个在线零售平台为例,通过AHPA识别流量周期性变化,在节假日高峰期前自动增加Pod数量,保证服务稳定;而在平峰期减少Pod数量,节省资源。AHPA为Kubernetes提供了智能化的弹性伸缩方案,提高了应用稳定性和资源利用率。
73 7
|
4月前
|
存储 弹性计算 运维
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
42 0
|
6月前
|
人工智能 Prometheus 监控
【LLMOps】Paka:大模型管理应用平台部署实践
【4月更文挑战第11天】Paka大模型管理及应用平台介绍
212 0
|
弹性计算 Java 芯片
阿里云张伟分享 | 软件跨架构迁移(x86->ARM)的原理及实践
2023年8月31日,系列课程第四节《软件跨架构迁移(X86 -> ARM)的原理及实践》正式上线,由阿里云弹性计算架构师主讲,内容涵盖:ARM与x86架构的差异分析;软件跨架构迁移的原理;软件迁移策略制定、环境准备、执行、测试优化及持续部署与维护等;以及软件迁移的全流程解读。
阿里云张伟分享 | 软件跨架构迁移(x86->ARM)的原理及实践
|
传感器 人工智能 监控
FC-PDIO01 CC-TUIO31 监控和持续改进其边缘AI应用
FC-PDIO01 CC-TUIO31 监控和持续改进其边缘AI应用
84 0
|
机器学习/深度学习 数据采集 弹性计算
甩掉容量规划炸弹:用 AHPA 实现 Kubernetes 智能弹性伸缩
我们提出了一种智能化弹性伸缩方案 AHPA,可以根据历史时序数据进行主动预测,提前扩容,避免弹性滞后。同时,会根据实时数据动态调整主动预测结果,兼容周期变动等场景。
296 4
甩掉容量规划炸弹:用 AHPA 实现 Kubernetes 智能弹性伸缩
|
运维 达摩院 Kubernetes
借助阿里云 AHPA,苏打智能轻松实现降本增效
"高猛科技已在几个主要服务 ACK 集群上启用了 AHPA。相比于 HPA 的方案,AHPA 的主动预测模式额外降低了 12% 的资源成本。同时 AHPA 能够提前资源预热、自动容量规划,能够很好的应对突发流量。"——赵劲松 (高猛科技高级后台工程师)
26332 0
借助阿里云 AHPA,苏打智能轻松实现降本增效
|
存储 机器学习/深度学习 缓存
从资源弹性到数据弹性,乾象如何将云上量化研究效率提升 40%?
本文将分享乾象量化研究基础平台的具体实践,介绍基于 Fluid+JuiceFSRuntime 的公共云弹性量化投研工作支撑。
从资源弹性到数据弹性,乾象如何将云上量化研究效率提升 40%?