容器服务 AHPA 弹性预测最佳实践-元毅 | 学习笔记

简介: 快速学习容器服务 AHPA 弹性预测最佳实践-元毅

开发者学堂课程【AHPA 弹性预测最佳实践容器服务 AHPA 弹性预测最佳实践-元毅学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/989/detail/15077


容器服务AHPA弹性预测最佳实践-元毅


前言

云原生场景下资源容量难以预估,使用 K8S 原生 HPA,面对弹性后配置复杂问题。

阿里云容器服务与智能决策算法团队合作推出 AHPA 弹性预测,可根据业务历史指标自动识别弹性周期并对容量进行预测,帮助提前进行弹性规划,解决弹性周的问题,AHPA 配置解锁最佳使用方式。

目录

一、AHPA 弹性预测介绍

二、指标源及 AHPA 配置参数介绍

三、边界保护的适用情况

四、降噪、算法分位数

五、典型场景:从 HPA 转 AHPA

六、典型场景:弹性推荐


一、AHPA 弹性预测介绍

1.弹性预测,应用冷启动问题

库冷启动过程大致如下

image.png

拉镜像、应用启动相对耗时长的阶段,不可预测。

当前弹性方案面临的问题

应用实例数评估困难,少了不够,多了浪费。稳定性风险,K8s原生HPA负载后弹,存在弹性滞后问题。CronHPA 定时弹性,可配置定时的时间段做弹性。随着业务变化,配置的时间段不能满足突发的资源诉求,带来稳定性风险。HPA 和 CronHPA 配置繁琐,HPA 需要知道当前应用阈值,需要不停尝试阈值,找到平衡点。随着业务变化,业务处理能力在变化,阈值可能变化,通用性较差,用户对资源成本诉求强烈。

HPA 和 CronHPA 弹性手段,不可避免的引入成本风险且复杂的问题,希望通过弹性预测解决。

2.弹性预测做什么事情

弹性预测三元组,指标数据、预测算法、工作负载。

预测把历史的业务指标做依据,有依据后找预测算法做,与专业智能决策算法团队做一次算法,结合预测算法,作用在相应的工作负载上做弹性预测。

image.png

3.目标

资源提前预热,做到实时容量调整。自动弹性规划,无需人工干预。弹性稳定性在及时生效情况下做到容错保护,兜底方案。

4.弹性预测实现方式

image.png

指标源,支持性能指标、流量指标、自定义指标。性能指标 CPU、memory,流量指标包括 RDQPS。预测配置提供给用户配置,可提供配置的工作负载和算法策略给用户。

AHPA 弹性预测的实现包括指标收集、数据分析、算法模块。从指标源收集数据,数据预处理详解到去重、数据清洗。结合补偿机制,补齐指标。指标采集后放到指标缓存里,提供给数据分析。数据分析有两部分,主动预测分析和被动预测分析。主动预测分析根据历史7天的指标,主动预测未来24小时的趋势。被动预测分析是实时预测分析,可拿最近五分钟的数据做实时的预测。调主动预测分析和被动预测分析模块,拿到主动预测分析和被动预测分析结果后,结合置时间区间最大最小值的边界配置,计算弹性执行的值,作用到工作负载。工作负载支持 Deployment、StatefulSet、HPA、Knative,可结果server

less平台进行弹性生效。

通过多指标源支持,主/被动预结合,多功能负载实现弹性预测。

5.AHPA 弹性预测优势体现

弹的更快,可毫秒级预测、秒级弹性,调用预制算法,秒级区进行弹性生效。

更准,可在多周期情况下,通过算法达到95%的周期性识别率,被动和主动相结合让弹性更准。

更稳,算法支持鲁棒性,数据有一段时间缺失,可容忍错误。细粒度边界设置,区间可做到分钟级别设置。


二、指标源及 AHPA 配置参数介绍

1.指标源配置

apiVersion: v1

kind: ConfigMap

metadata:

name: application-intelligence

namespace: kube-system

data:

armsUri:https://cn-beiing.arms.aliyuncs.com:9443/api/v1/prometheus/xxx/1581204543170042/xxx/cn-beijing

token: xxxx

realtimesource:metric-server

可在 ConfigMap 里做配置,包括三部分内容。配置历史指标源的Url 参数,通过此参数,可拿到历史。Token 根据 Promethues 配置的 token,推荐使用 token,更安全。没有设置 token,直接拿数据。实时数据源,实时指标可通过 realtimesource 或 metric-server,使用 serverless K8S 时,可不使用 metric-server,直接使用 VK。

AdvancedHorizontalPodAutoscaler 配置

弹性生效策略,目前支持 observer、auto,observer 确认模式,只做观察,不做生效,推荐上线先使用观察模式,观察后判断预测结果是否符合预期,符合预期开启 auto 模式。

Metric 定义指标、名称、阈值,cpu、memory、qps、rt

弹性工作负载支持 Deployment、HPA、Knative 平台。

预测分位数,表示业务指标实际值低于设定目标值的概率,越大表示越保守,两位小数,0~1。实例目标值50%,设置50%cpu目标值,分位数是否趋近50%,越靠近1,表示实际值大概率低于目标设定值。99%低于50%设定值,90是90%低于,10%超过值。值作用根据实际业务设置,业务思维使用率高,可设置的不保守。思维使用率严格控制在50%以下,cpu 很敏感,值可设置相对保守。

Pod 冷启动时间,通过冷静启动时间决定提前的预测时间,值建议配置,不配置拿当前正在运行的 Pod 当前生命周期和计算 Pod 迭代时间。

扩缩容边界区间,推荐配置,设置时间范围内的最大最小值。

2.指标预处理

指标去重,分钟级别去除重复的指标。指标补齐,指标缺失,指挥补齐。指标清洗,在启动时消除冷启动 cpu 毛刺。

image.png

某一时刻有 CPU 明显波动,此时刻有 Pod 创建,Pod 创建本身是Java 的应用,应用启动过程中涉及到 Java 的类加载,消耗大量 CPU,造成此时刻 CPU 的递增。不是实际业务的 CPU 指标,没必要拿指标做预测。针对冷启动 CPU 毛刺,指标清洗时剔除。剔除后,此时刻是平滑的数据,算法更可靠。


三、边界保护的适用情况

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

maxReplicas:15

可做时间区间的保护,某个时间段可设置最大值最小值,在最大最小值范围内进行扩缩容,起到边界保护作用。可设置时间段和分钟级别的时间点,如果结合最大值最小值设为一样,退化成定时弹性,可在某个时间段内处于固定的时位数。应急资源准备,某一时间段内需要大量做准备,可预期的时间段和时间点,时间段内设置资源,通过最大最小值设最高值,做资源的体现准备。边界保护除时间段保护外,可做定时弹性和应急资源准备。


四、降噪、算法分位数

提供用户降噪能力可通过设置降噪函数,剔除毛刺。降噪与数据清洗区别,数据清洗里清洗可预期的数据,非可预期的不知道造成毛刺的原因,可通过降噪的方式,算法上去除。

image.png

某个业务范围未知的抖动,网络或其它因素导致的负载,引起CPU波动,此类毛刺可通过降噪的方式去除。

分位数可做到平衡 CPU 使用率和业务稳定性的作用,可通过分位数确定,CPU 敏感分位数可设置相对保守,更多落在设定的 CPU 目标阈值下,Pod 数资源多,保证业务更加稳定。

image.png

CPU 超过目标阈值之上,可忍受波动。设置更小,用更少的资源,平衡 CPU 使用率和业务稳定性的手段。


五、典型场景:从 HPA 转 AHPA

用户之前使用原生的 K8S HPA 转到 AHPA 弹性预测

痛点,使用 HPA,应用存在冷启动的问题,导致 CPU 使用率无法提升。应用承载 CPU 使用率40%,本身存在冷启动问题,导致 HPA受到弹性负载出发后开始弹,弹的过程中,业务量上升,如果 HPA按40%设置,CPU 使用率达到50%,超出承受范围,使用 HPA 设置比较低的值做缓冲,取小的方式。使用自动弹性,不影响业务稳定性。CPU 在 HPA 里不敢配置较高,导致 CPU 使用率无法提升。

image.png

HPA 弹性使用原理,黑色表示实际业务请求量,蓝色表示 HPA 弹性,灰色表示实际 Pod 数,业务量上升后触发到 HPA 弹性,弹的过程中业务上量,导致本身业务不稳定出现。弹的过程区间导致本身应用负载比较高,甚至超出承受范围,AHPA 解决了 HPA 的问题。同样一个线,业务到来前,根据冷启动时间,提前准备资源,到时刻有充足的资源满足业务负载。使用 AHPA 弹性预测方案,上线前后对比,CPU 使用率较上线前提高9%,资源成本节省比例28.68%。

image.png

绿色线表示平均 CPU 使用率,整体比较稳定。红线暗含趋势,Pod数逐渐上升,业务量上升,自动扩容做。保证 CPU 使用率和投资资源,满足业务负载。AHPA 带来自动弹性规划,免去人工干预。中间Pod 数有平稳的阶段,是一段时间做重度的资源规划,满足压缩环境,此时间段通过边界保护,设置固定时间解决资源准备情况,是AHPA 带来的额外能力。


六、典型场景:弹性推荐

痛点:自身的 PaaS 平台想与 WEB 方案相结合,现有 HPA 弹性生效没有提高规划和生效。

AHPA 提高弹性生效的能力,可以通过 AHPA 做规划,不进行生效。

kubectl get --raw/apis/metrics.alibabacloud.com/v1beta1/namespaces/default/predictions/fibdeployment

通过 K8S 原生 api 暴露接口,可拿到三个参数。

periodicity 可判断当前应用是否有周期性,未来24小时的预测结果。当前推荐的 Pod 数,将主动被动、未来24小时预测的当前时刻值、当前实时的结果、边界保护配置的区间做计算,最终有当前推荐生效配置 Pod 数。

示例

spec:

instanceBounds:

-bounds:

-cron:'* 0-8 ? * MON-FRI'

maxReplicas:50

minReplicas:4

-cron:'* 9-15 ? * MON-FRI'

maxReplicas:50

minReplicas:10

-cron:'* 16-23 ?* MON-FRI

maxReplicas:50

minReplicas:12

-resource:

name:cpu

target:

averageUtilization:50

type: Utilization

type: Resource

minReplicas: 0

prediction:

quantile: 95

scaleUpForward:180

scaleStrategy: observer

scaleTargetRef:

apiVersion:apps/v1

kind: Deployment

name:fib-deployment

richard@B-N3TEMD6P-1650 demo %

跑 HPA 弹性预测资源,设置边界保护的区间范围,时间保护区间不能设置重叠。设置重叠,有不断抖动情况发生。CPU 阈值50%,分位数95,冷启动时间3分钟,作用于 deployment 上。弹性生效策略观察模式,可看到预测的趋势。

richard@B-N3TEMD6P-1650 demo % kubectl get--raw'/apis/metrics.alibabacloud.com/v1beta1/namespaces/default/predictionsobserver/fib-deployment'ljq -r'.content' lbase64 -d >observer.html

登录接口可拿到预测趋势的结果,分析。

CPU使用率如下

image.png

CPU 使用量如下,绿色线是预测的 CPU 使用量,蓝色线是实际的CPU 使用量,预测量可满足当前实际诉求。

image.png

Pod 数如下,绿色线低于蓝色线,更少的 Pod 数满足实际 CPU 使用量。

image.png

整体有周期性,预测结果符合周期性预测,可做 photo 生效。

配置推荐,另一个接口。接口内容有未来小时,每分钟 Pod 数的推荐结果,当前是否有周期性。推荐 Pod 数,时间点时刻的 Pod 数是多少,数据结合主动和被动,实时、边界保护的值,三个值作用实际生效的结果。

{"timestamp":1656507480,"podnum":18},{"timestamp":1656507540,"podnum":18},{"timestamp":1656507600,"podnum":17}],"recommend_pod_series":[{"timestamp":1656422460,"cpu":0.168,"podnum":35}],"periodicity":1}

richard@B-N3TEMD6P-1650 demo %

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
存储 监控 安全
【专栏】探讨Docker Compose的核心概念、使用方法及最佳实践,助你轻松驾驭容器编排的世界
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
780 2
|
10月前
|
人工智能 安全 API
容器化AI模型的安全防护实战:代码示例与最佳实践
本文基于前文探讨的容器化AI模型安全威胁,通过代码示例展示如何在实际项目中实现多层次的安全防护措施。以一个基于TensorFlow的图像分类模型为例,介绍了输入验证、模型加密、API认证和日志记录的具体实现方法,并结合最佳实践,如使用安全容器镜像、限制权限、网络隔离等,帮助构建更安全的AI服务。
|
11月前
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
12月前
|
Kubernetes 安全 数据安全/隐私保护
云卓越架构:容器安全最佳实践
本次分享由阿里云智能集团解决方案架构师张玉峰主讲,主题为“云卓越架构:容器安全最佳实践”。内容涵盖容器安全的挑战、云原生容器安全架构及典型场景。首先分析了容器安全面临的问题,如镜像漏洞和权限管理。接着介绍了容器安全架构的五个维度:身份权限管理、配置安全检查、运行时防护、镜像安全检测及发布的安全管控。最后通过具体场景展示了容器身份与权限管理、密钥管理、运行时防入侵等最佳实践,强调了安全左移的重要性,确保从开发到运行的全生命周期安全覆盖。
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
1368 3
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
2048 2
|
监控 安全 数据库
【Docker专栏】Docker容器化应用的最佳实践
【5月更文挑战第7天】本文介绍了 Docker 容器化应用的关键最佳实践,包括使用官方基础镜像、保持镜像精简、以非 root 用户运行容器、安全扫描、编写高效 Dockerfile、环境隔离、使用数据卷、选择合适网络模式、设置资源限制、使用版本标签、容器编排以及文档和自动化部署。遵循这些实践可提升效率和安全性,同时要注意随着技术发展不断更新知识。
419 10
【Docker专栏】Docker容器化应用的最佳实践
|
机器学习/深度学习 Kubernetes 算法框架/工具
容器服务 ACK 大模型推理最佳实践系列一:TensorRT-LLM
在 ACK 中使用 KServe 部署 Triton+TensorRT-LLM

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版