容器服务支持节点池的扩缩容功能,允许手动或使用弹性伸缩实现集群的扩缩容。本文为您介绍如何配置节点池的扩容和缩容功能。
前提条件
- 已创建容器服务集群,详情请参见 创建集群。
- 使用弹性伸缩功能,需要确保当前集群已安装 cluster-autoscaler 组件。详情请参见 安装组件。
使用限制
- 安装 cluster-autoscaler 组件时配置的弹性伸缩规则,与本文描述的操作属于同一种配置。即节点的弹性伸缩功能,有两个配置入口,两边的配置会相互覆盖。
更多关于节点池中节点相关的弹性伸缩说明,请参见 节点弹性伸缩。 - 弹性伸缩规则,仅对 按量计费 的节点资源生效。
- 在 ECS 侧对 VKE 关联的节点进行删除或释放等操作时,VKE 侧会根据期望的节点数量进行相应的调整。详情请参见 FAQ。
手动扩缩容
调整节点池中节点的数量,可手动触发节点扩缩容,将节点池中的节点扩充/缩小到设置数量。
注意
- 默认节点池
vke-default-nodepool
仅支持扩容。 - 手动缩容将触发移除节点操作,需要注意以下情况:
- 移除节点将导致节点上的 Pod 自动迁移至其他节点,建议在业务低峰期进行。
- 手动缩容默认同步销毁释放节点,将同时删除系统盘和数据盘的数据,无法恢复,请谨慎操作。
- 登录 容器服务控制台。
- 在左侧导航栏中选择 集群。
- 在集群列表页面,单击目标集群。
- 在集群管理页面的左侧导航栏,选择 节点管理 > 节点池。
- 单击目标节点池右侧的 扩缩容。

- 在 节点数量 对话框,按需设置当前节点池的期望节点数量。

说明
该 节点数量 为您期望的节点数量,而不是新增节点数量。例如:扩容前节点池中已存在 3 个节点。当您配置 节点数量 为 5 时,系统会自动扩容 2 个节点,满足 5 个节点的期望。而不是新增 5 个节点。
- 单击 确定,完成配置。
弹性伸缩
步骤一:配置弹性伸缩规则
登录 容器服务控制台。
在左侧导航栏中选择 集群。
在集群列表页面,单击目标集群。
在集群管理页面的左侧导航栏,选择 节点管理 > 节点池。
单击节点池列表左上角的 弹性伸缩配置。
单击 编辑规则,在弹出的 弹性伸缩规则 页面,配置规则。
说明
此处显示的 弹性伸缩规则 页面配置,与安装 cluster-autoscaler 组件时的配置一致。若编辑规则,表示更改安装 cluster-autoscaler 组件时配置的规则。

配置项 | 说明 |
---|
集群名称 | 当前集群的名称,不可修改。 |
扩容算法 | 节点池自动扩容时所采用的扩容算法类型,包括: - random:表示随机选择一个节点池进行扩容。
- most-pods:表示选择能够调度最多 Pod 的节点池进行扩容。
- least-waste:表示选择空闲 CPU 资源最少的节点池进行扩容。
- priority:表示根据节点池启用 弹性伸缩 后设置的优先级,选择优先级最高的节点池进行扩容。
|
弹性灵敏度 | 用于判断集群弹性伸缩的时间间隔,支持取值:10s、15s、30s、60s、120s、180s 和 300s。 |
自动缩容 | 是否开启节点的自动缩容: - 开启:当集群中有较多空闲节点资源时会触发缩容。仅对按量计费节点资源生效。
- 不开启:节点扩容后,即使使用率下降,也不会自动缩容。
|
启动污点 | 单击 添加,配置启动污点。当节点上存在该污点时,系统认为该节点未完成初始化。 |
忽略污点 | 单击 添加,配置忽略污点。扩容过程中,系统会忽略节点或节点池中指定污点的调度属性。 |
开启 自动缩容 后,需要配置以下参数。
配置项 | 说明 |
---|
非 GPU 节点的缩容阈值 | 当非 GPU 类型节点的 CPU、内存资源使用率(单资源请求量÷单资源总量*100% )低于该阈值时,可能会触发自动缩容。默认 50%。 说明 非 GPU 类型节点的 CPU 或内存资源中任意一个达到缩容阈值,即可触发该规则。 |
GPU 节点的缩容阈值 | GPU 类型节点的缩容策略根据其是否使用 mGPU 能力,有不同的缩容策略,默认阈值为 50%: - 未使用 mGPU:当节点的 GPU 资源使用率(
单资源请求量÷单资源总量*100% )低于该阈值时,可能会触发自动缩容。 - 已使用 mGPU:当 mGPU 的 GPU 算力、GPU 显存、内存、CPU 中任意一个资源的使用率(
单资源请求量÷单资源总量*100% )低于该阈值时,可能会触发自动缩容。
注意 mGPU 目前处于 公测 阶段,功能详细说明参见 mGPU 概述。 仅以下版本的 cluster-autoscaler 组件支持配置该缩容阈值: - v1.26.3-vke.6 及以上版本。
- v1.24.2-vke.6 及以上版本。
- v1.20.2-vke.20 及以上版本。
若集群中已安装的 cluster-autoscaler 组件版本较低时,请升级组件。详细操作,请参见 升级组件;cluster-autoscaler 组件的发版记录,请参见 cluster-autoscaler
|
缩容触发时延 | 当节点资源使用率低于阈值,并持续该时间段后,集群将触发自动缩容。默认 10 分钟。 |
扩容后缩容冷却时间 | 节点进行扩容后,能再次执行缩容所需等待的时间间隔。默认 10 分钟。 |
缩容失败冷却时间 | 节点缩容失败后,能再次执行缩容所需等待的时间间隔。默认 3 分钟。 |
最大并发缩容数 | 节点缩容时,允许同时进行缩容的并发数目。默认 5。 |
Pod 终止超时时间 | 节点排水时等待 Pod 终止的最大等待时间。整数形式,取值范围为 1~10000,单位为秒。默认为 600 秒。 |
Pod 最小副本数 | 节点排水时允许存在的最小 Pod 数量。整数形式,取值范围为 1~10000。默认为 0。 |
开启 Daemonset 排水 | 节点缩容前是否驱逐节点上 DaemonSet 类型的 Pod。 - 开启:表示节点缩容前,会首先驱逐节点上 DaemonSet 类型的 Pod。
- 不开启:表示节点缩容前,不会驱逐节点上 DaemonSet 类型的 Pod。
|
不缩容节点 | 勾选不进行缩容的节点。可选项如下: - 包含本地储存 Pod 的节点。
- 包含 kube-system 命名空间下非 DaemonSet 管理的 Pod 的节点。
|
单击 确定,完成配置。
步骤二:开启节点池弹性伸缩
您可以在创建节点池时开启弹性伸缩功能,也可以配置存量节点池的弹性伸缩功能。本文以配置存量节点池举例。
- 在集群管理页面的左侧导航栏,选择 节点管理 > 节点池。
- 在节点池列表中,选择需要配置弹性伸缩功能的节点池。单击 操作 栏中的 编辑。

- 配置节点池的弹性伸缩功能。

配置项 | 说明 |
---|
弹性伸缩 | 勾选启用节点池的弹性伸缩功能。 - 节点数量范围:弹性伸缩时,节点数量动态调整的范围。输入数值范围:0~2000。
若节点需求超过当前集群的节点配额总数,您可登录 配额中心 申请扩容节点配额。 - 优先级:当弹性扩容算法选择
priority 时生效,对优先级高的节点池进行扩容,数字越大,优先级越高。输入数值范围:0~100。
|
结果验证
查看启用弹性伸缩的节点池
在节点池页面中,单击 弹性伸缩配置,可以查看启用弹性伸缩功能的节点池列表。

查看节点池伸缩详情
当节点池发生扩缩容后,您可以查看节点池的伸缩记录和详细信息。
- 在集群管理页面的左侧导航栏,选择 节点管理 > 节点池。
- 在节点池列表中,单击节点池名称,进入节点池详情页面。
- 单击 伸缩记录 页签,即可查看该节点池的弹性伸缩详情。包括伸缩活动、状态、变化实例数、变化后实例数等信息。

支持基于筛选条件和时间对伸缩记录进行筛选,允许配置多个筛选条件,筛选条件之间是 与 的关系。包括以下筛选条件:
- 伸缩记录 ID:基于伸缩记录 ID 进行筛选。您可以在伸缩记录列表中的 伸缩活动 列中查看该 ID 值。例如
s-42ccnt
。 - 节点 ID:基于伸缩节点 ID 进行筛选。您可以在伸缩记录列表中的 变化实例数 列中查看对应节点的 ID。
- 伸缩类型:支持 扩容 和 缩容 选项,允许通过弹性伸缩类型进行筛选。
节点池扩缩容智能诊断
托管节点池支持扩缩容智能诊断功能,当您进行节点池扩容和缩容时,如果失败,则系统会自动进行诊断,并为您给出诊断结果和修复建议。
说明
- 仅托管节点池支持扩缩容智能诊断功能。
- 故障诊断任务需要在您的容器节点上执行数据采集程序并收集检查结果,采集的信息包括系统版本、运行负载、故障事件、containerd/kubelet 等组件的运行状态、系统日志中关键错误信息,不会采集任何和客户相关的业务信息以及敏感数据。
当节点池扩缩容失败后,您可以查看节点池的伸缩记录,获取诊断信息。
- 在集群管理页面的左侧导航栏,选择 节点管理 > 节点池。
- 在节点池列表中,单击节点池名称,进入节点池详情页面。
- 单击 伸缩记录 页签,即可查看该节点池的弹性伸缩详情。

- 在任务列表中选择失败的任务,单击 查看诊断报告,即可获取失败原因和修复建议。
