AHPA 弹性预测最佳实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 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月前
|
缓存 人工智能 并行计算
diffusers SD推理加速方案的调研实践总结(1)
diffusers SD推理加速方案的调研实践总结
83 13
|
2月前
|
人工智能 资源调度 物联网
diffusers SD推理加速方案的调研实践总结(2)
diffusers SD推理加速方案的调研实践总结
|
2月前
|
存储 弹性计算 运维
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
可观测性体系问题之Process Layer在ECS稳定性平台中的工作如何解决
29 0
|
3月前
|
开发框架 自然语言处理 算法
OneDiff 1.0 发布!生产环境稳定加速 SD/SVD 模型
【6月更文挑战第8天】针对 SD/SVD 模型的加速工具,提升运行效率和稳定性。采用先进算法,减少训练推理时间,增强生产环境稳定性,兼容多种开发框架。示例代码显示明显加速效果,助力企业提升业务速度,简化用户使用体验。OneDiff 1.0,为模型加速领域树立新标杆,驱动行业进步!
47 2
|
4月前
|
人工智能 Prometheus 监控
【LLMOps】Paka:大模型管理应用平台部署实践
【4月更文挑战第11天】Paka大模型管理及应用平台介绍
161 0
|
4月前
|
监控 Cloud Native 测试技术
PTS 3.0:可观测加持的下一代性能测试服务
PTS 3.0:可观测加持的下一代性能测试服务
97207 6
|
12月前
|
弹性计算 Java 芯片
阿里云张伟分享 | 软件跨架构迁移(x86->ARM)的原理及实践
2023年8月31日,系列课程第四节《软件跨架构迁移(X86 -> ARM)的原理及实践》正式上线,由阿里云弹性计算架构师主讲,内容涵盖:ARM与x86架构的差异分析;软件跨架构迁移的原理;软件迁移策略制定、环境准备、执行、测试优化及持续部署与维护等;以及软件迁移的全流程解读。
阿里云张伟分享 | 软件跨架构迁移(x86->ARM)的原理及实践
|
5G 缓存 物联网
带你读《5G 系统技术原理与实现》——1.3.3 CU/DU 组网部署
带你读《5G 系统技术原理与实现》——1.3.3 CU/DU 组网部署
|
机器学习/深度学习 数据采集 弹性计算
甩掉容量规划炸弹:用 AHPA 实现 Kubernetes 智能弹性伸缩
我们提出了一种智能化弹性伸缩方案 AHPA,可以根据历史时序数据进行主动预测,提前扩容,避免弹性滞后。同时,会根据实时数据动态调整主动预测结果,兼容周期变动等场景。
280 3
甩掉容量规划炸弹:用 AHPA 实现 Kubernetes 智能弹性伸缩
|
机器学习/深度学习 文件存储 计算机视觉
【最强模型之道】AWS Auto-Aug:通过Weight共享改进自动数据增广,打造最高精度单模型
【最强模型之道】AWS Auto-Aug:通过Weight共享改进自动数据增广,打造最高精度单模型
186 0
下一篇
云函数