弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理方式。本文介绍弹性伸缩的背景信息和弹性伸缩的组件信息。
背景介绍
弹性伸缩是K8s上被广泛采用的功能,典型的场景包含在线业务弹性、定时周期性负载变化等。ACS目前支持HPA、CronHPA、AHPA、KEDA和AVPA弹性伸缩策略,通过感知应用负载或设定时间表,动态调整应用副本数或者应用的资源规格,以确保资源的高效利用和服务的稳定性。
弹性伸缩组件介绍
组件名称 | 组件介绍 | 适用场景 | 使用限制 | 参考文档 |
HPA | Kubernetes内置组件,主要面向在线业务。 | 在线业务 | 适用于Deployment、StatefulSet等实现了scale接口的对象。 | |
CronHPA | 开源组件,主要面向应用资源使用率存在周期性变化的场景。 | 周期性负载业务 | 适用于Deployment、StatefulSet等,实现了scale接口的对象。此外CronHPA提供了HPA对象的兼容能力,您可以同时使用CronHPA与HPA。 | |
AHPA | 开源组件,主要面向有明显周期性场景。例如直播、在线教育、游戏服务等。 | 周期性负载业务 | 适用于Deployment、StatefulSet等实现了scale接口的对象。此外,AHPA弹性预测需要至少七天的应用历史数据作为预测基础。 | |
KEDA | 开源组件,适用于音视频离线转码、事件驱动作业、流式数据处理等场景。 | 事件驱动的负载业务 | 适用于Deployment、StatefulSet等实现了scale接口的对象。 | |
AVPA | 应用市场组件, 主要面向不适合做水平弹性的有状态或者作业, 例如游戏服务,离线作业等,以及规格设置不合理需要动态调整的业务。 | 应用启动加速 短期负载变化业务 | 适用于任何工作负载。AVPA 适用于10分钟及以上的短期负载变化,且目前只支持调整CPU资源, 不适用于秒级的负载突发变化以及内存资源的调整。 |