云容器引擎

弹性伸缩概述

2022-04-19 13:59:38

弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。

背景介绍

随着Kubernetes已经成为云原生应用编排、管理的事实标准,越来越多的应用选择向Kubernetes迁移,用户也越来越关心在Kubernetes上应用如何快速扩容面对业务高峰,以及如何在业务低谷时快速缩容节约资源与成本。

在Kubernetes的集群中,“弹性伸缩”一般涉及到扩缩容Pod个数以及Node个数。Pod代表应用的实例数(每个Pod包含一个或多个容器),当业务高峰的时候需要扩容应用的实例个数。所有的Pod都是运行在某一个节点(虚拟机)上,当集群中没有足够多的节点来调度新扩容的Pod,那么就需要为集群增加节点,从而保证业务能够正常提供服务。

弹性伸缩在CCE上的使用场景非常广泛,典型的场景包含在线业务弹性、大规模计算训练、深度学习GPU或共享GPU的训练与推理、定时周期性负载变化等。

弹性伸缩分为如下两个维度:

  • 工作负载弹性伸缩即调度层弹性,主要是负责修改负载的调度容量变化。例如,HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会改变当前负载占用的调度容量,从而实现调度层的伸缩。
  • 集群/节点弹性伸缩即资源层弹性,主要是集群的容量规划不能满足集群调度容量时,会通过弹出ECS等资源的方式进行调度容量的补充。

两个维度的弹性组件与能力可以分开使用,也可以结合在一起使用,并且两者之间可以通过调度层面的容量状态进行解耦。

CCE弹性伸缩组件介绍

 

CCE支持的两种弹性伸缩对比

表-CCE支持的两种弹性伸缩对比

弹性伸缩

基于Kubernetes插件实现(推荐)

基于AOM服务实现

实现方式

基于CCE提供的插件cce-hpa-controller实现工作负载弹性伸缩

基于CCE提供的插件autoscaler实现节点弹性伸缩

基于AOM服务实现弹性伸缩,伸缩指标和触发伸缩均由AOM服务提供

使用入口

工作负载伸缩

1.      在CCE左侧导航栏中选择“弹性伸缩”,进入“工作负载伸缩”。

2.      在左侧导航栏中选择“工作负载 > 无状态负载 Deployment/有状态负载 StatefulSet”,进入工作负载详情页,在“伸缩”页签下“弹性伸缩 - HPA”。

节点伸缩

在CCE左侧导航栏中选择“弹性伸缩”,进入“节点伸缩”。

工作负载伸缩

在CCE左侧导航栏中选择“工作负载 > 无状态负载 Deployment/有状态负载 StatefulSet”,单击工作负载名称进入工作负载详情页,在“伸缩”页签下选择“弹性伸缩 - AOM”。详情请参见弹性伸缩-AOM。

节点扩容

在CCE左侧导航栏中选择“资源管理 > 集群管理”,进入集群详情页,选择“弹性扩容”页签。详情请参见集群弹性扩容。

约束与限制

  • 请在使用的集群中安装对应的插件,详情请参见“创建工作负载弹性伸缩(HPA)”、“创建节点伸缩策略”。
  • 节点伸缩仅针对节点池下的节点,使用弹性伸缩的节点池需开启弹性扩缩容功能(在创建/编辑节点池时指定)。

当前区域的AOM服务支持伸缩功能,并且CCE集群版本低于v1.17。

使用须知

  • 支持监控指标伸缩和定时伸缩两种策略的负载伸缩。
  • 支持调度扩容(在负载实例无法调度时自动从节点池中扩容节点)、监控指标扩容、定时扩容三种节点扩容策略。
  • 节点缩容仅支持资源分配率缩容机制,当集群下CPU和内存分配率低于用户设置的门限(在安装/编辑autoscaler时设置)时将对节点池下节点启动缩容(该功能可以关闭)。
  • defaultpool仅用于兼容非节点池创建的节点。
  • 支持监控指标伸缩和定时伸缩两种策略的负载伸缩。
  • 支持监控指标和定时两种策略的节点扩容,不支持节点缩容。
  • 节点仅支持设置一个节点配置(在集群详情页的“弹性扩容”页签下进行设置),且节点模板支持的节点可配参数较少。