弹性伸缩概述
弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。本文介绍弹性伸缩的背景信息和弹性伸缩涉及的组件。
背景介绍
弹性伸缩是容器被广泛采用的功能,典型的场景包含在线业务弹性、大规模计算训练、深度学习GPU或共享GPU的训练与推理、定时周期性负载变化等。弹性伸缩分为两个维度:
- 调度层弹性,主要是负责修改负载的调度容量变化。例如,HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会改变当前负载占用的调度容量,从而实现调度层的伸缩。
- 资源层弹性,主要是集群的容量规划不能满足集群调度容量时,会通过弹出ECS等资源的方式进行调度容量的补充。
两层的弹性组件与能力可以分开使用,也可以结合在一起使用,并且两者之间是通过调度层面的容量状态进行解耦。
伸缩组件介绍
调度层弹性组件介绍
组件名称 | 组件介绍 | 适用场景 | 使用限制 |
---|---|---|---|
HPA | Kubernetes内置组件,主要面向在线业务。 | 在线业务 | 适用于Deployment、StatefulSet等实现scale接口的对象。 |
VPA(alpha) | 开源社区组件,主要面向大型单体应用。 | 大型单体应用 | 适用于无法水平扩展的应用,通常是在Pod出现异常恢复时生效。 |
Cubescaler | CCSE自研插件,主要面向应用资源使用率存在周期性变化的场景。 | 周期性负载业务 | 适用于Deployment、StatefulSet等,实现了scale接口的对象。 |
资源层弹性组件介绍
组件名称 | 组件介绍 | 适用场景 |
---|---|---|
cube-cluster-autoscaler | CCSE自研插件,节点水平伸缩组件,提供了调度、弹性优化、成本优化的功能。 | 全场景支持,适合在线业务、深度学习、大规模成本算力交付等。 |
功能入口
支持用户手动伸缩应用容器实例,HPA自动伸缩策略和定时自动伸缩。