更新时间:2024-12-04 GMT+08:00

弹性伸缩概述

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

背景介绍

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

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

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

CCE弹性伸缩

CCE的弹性伸缩能力分为如下两个维度:

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

组件介绍

工作负载弹性组件介绍

表1 工作负载弹性组件

类型

组件名称

组件介绍

参考文档

HPA

Kubernetes Metrics Server

Kubernetes内置组件,实现Pod水平自动伸缩的功能,即Horizontal Pod Autoscaling。在kubernetes社区HPA功能的基础上,增加了应用级别的冷却时间窗和扩缩容阈值等功能。

HPA策略

CustomedHPA

CCE容器弹性引擎

自研的弹性伸缩增强能力,主要面向无状态工作负载进行弹性扩缩容。能够基于指标(CPU利用率、内存利用率)或周期(每天、每周、每月或每年的具体时间点)。

CustomedHPA策略

Prometheus

云原生监控插件

一套开源的系统监控报警框架,负责采集kubernetes集群中kubelet的公开指标项(CPU利用率、内存利用率)。

CronHPA

CCE容器弹性引擎

CronHPA可以实现在固定时间段对集群进行扩缩容,并且可以和HPA策略共同作用,定时调整HPA伸缩范围,实现复杂场景下的工作负载伸缩。

CronHPA定时策略

节点弹性伸缩组件介绍

表2 节点弹性组件

组件名称

组件介绍

适用场景

参考文档

CCE集群弹性引擎

Kubernetes社区开源组件,用于节点水平伸缩,CCE在其基础上提供了独有的调度、弹性优化、成本优化的功能。

全场景支持,适合在线业务、深度学习、大规模成本算力交付等。

节点自动伸缩