当集群的容量规划无法满足应用Pod调度时,您可以使用节点自动伸缩方案实现节点的自动扩缩。节点自动伸缩适用于扩容规模较小(例如开启弹性的节点池数量少于20,或对应节点池中的节点数量少于100),工作负载流量波动平缓,具有周期性或可预测性资源需求,并且单批次资源伸缩即可满足业务需求的场景。
阅读前提示
为了让您更好地使用节点自动伸缩功能,建议您在阅读本文档前,已阅读节点伸缩并了解以下内容:
节点自动伸缩的工作原理与功能特性
哪些业务场景下,节点自动伸缩可以满足您的业务诉求
使用节点自动伸缩前需要了解的注意事项
前提条件
本功能涉及以下流程:
步骤一:为集群开启节点自动伸缩功能:先基于集群维度开启节点自动伸缩功能后,节点池设置的自动扩缩容策略才会生效。
步骤二:配置开启弹性的节点池:节点自动伸缩功能仅对设置了自动扩缩容的节点池生效,因此,还需要将指定节点池的扩缩容模式配置为自动模式。
步骤一:为集群开启节点自动伸缩功能
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在节点池页面,单击节点伸缩后方的去配置。
首次使用节点自动伸缩功能时,按照页面提示,开通ESS服务并完成授权(如已开通并授权,请跳过)。
ACK托管集群:完成AliyunCSManagedAutoScalerRole角色授权。
ACK专有集群:完成KubernetesWorkerRole角色授权和AliyunCSManagedAutoScalerRolePolicy系统策略的授权,入口如下所示。
在节点伸缩配置页面,选择节点伸缩方案为自动伸缩,配置伸缩的配置项,然后单击确定。
节点伸缩方案选择后支持切换。如需切换,您可以在此处变更为节点即时弹性,仔细阅读页面提示并按照页面指引完成操作。
配置
说明
节点池扩容顺序策略
随机策略:存在多个可扩容节点池时,从中任意选择一个节点池进行扩容。
默认策略:存在多个可扩容节点池时,从中选择一个资源浪费最少的节点池进行扩容。
优先级策略:存在多个可扩容节点池时,选择优先级高的节点池进行扩容。
节点池优先级通过节点池扩容优先级参数定义。
节点池扩容优先级
设置节点池的扩容优先级。仅当节点池扩容顺序策略选择为优先级策略时生效。
取值范围:1~100的整数,数字越大,优先级越高。
您需要在参数右侧单击添加,选择已开启了自动弹性的节点池,并为其设置优先级。
若无已开启自动弹性的节点池可选择,您可以暂时忽略该参数,待步骤二:配置开启弹性的节点池执行后再重新设置节点池优先级。
弹性灵敏度
用于调整系统判断伸缩的间隔时间。默认值为60s。
实施弹性伸缩时,弹性组件会基于调度情况自动触发扩容。
重要ECS节点:仅当同时满足缩容阈值、缩容触发时延和静默时间三个条件时,弹性组件才有可能执行节点缩容。
GPU节点:仅当同时满足GPU 缩容阈值、缩容触发时延和静默时间三个条件时,弹性组件才有可能执行GPU节点缩容。
允许缩容
是否允许进行节点缩容。关闭时,缩容相关配置不生效。请谨慎设置。
缩容阈值
启用节点自动伸缩的节点池中,单个节点的请求资源(Request)与单个节点资源容量的比值。
仅当该比值低于配置的阈值时,即节点的CPU和内存资源利用率均低于缩容阈值时,节点才有可能被缩容。
GPU 缩容阈值
GPU实例的缩容阈值。
仅当该比值低于配置的阈值时,即节点的CPU、内存和GPU资源利用率均低于GPU 缩容阈值时,GPU节点才有可能被缩容。
缩容触发时延
从检测到有缩容需求(达到缩容阈值)到实际执行缩容操作(缩容Pod数量)之间的时间间隔。单位:分钟。默认值:10分钟。
重要仅当满足缩容阈值配置,且达到缩容触发时延后,弹性组件才有可能执行节点缩容。
静默时间
距离最近一次扩容完成后,弹性组件不执行缩容的时间间隔。
在静默时间内,弹性组件不会缩容节点,但仍会判断节点是否可以缩容;超过静默时间后,如果节点满足缩容阈值和缩容触发时延两个条件,弹性组件则会正常执行缩容。例如,当静默时间为10分钟,缩容触发时延为5分钟时,弹性组件在最近一次扩容后的10分钟内不会缩容节点,但会在静默的10分钟内判断节点是否符合缩容条件。等待静默时间结束,节点达到缩容阈值且时间超过缩容触发时延规定的5分钟时,弹性组件会继续执行缩容。
步骤二:配置开启弹性的节点池
您可以配置已有节点池,将节点扩缩容模式修改为自动模式,也可以新建开启自动弹性的节点池。
具体操作,请参见创建和管理节点池。主要配置项如下:
配置 | 说明 |
扩缩容模式 | 支持手动扩容和自动扩容两种扩容方式,根据业务需求和策略自动调整计算资源,节省集群成本。 |
实例数量 | 节点池中可伸缩的最小实例数和最大实例数,不包含您已有的实例。 说明
|
实例相关的配置项 | 根据实例规格或属性选择Worker节点池使用的ECS实例,可通过vCPU、内存、规格族、架构等属性筛选所需的实例规格族。您可以参见ECS实例规格配置建议了解ACK不支持的实例规格并获取节点的配置建议。 节点池扩容时,将从选中的实例规格中扩容。具体扩容到的实例规格取决于节点池扩缩容策略。选择的实例规格越多,节点池成功弹出节点的概率越大。 节点池内实例的规格。单一规格的ECS实例库存容量波动较大,建议配置多种相同规格的实例类型,以提高节点伸缩成功率。 如果您选择的实例均为GPU服务器,您可以按需开启共享 GPU 调度。更多信息,请参见共享GPU调度。 |
操作系统 | 在开启自动伸缩时,支持选择Alibaba Cloud Linux、Windows镜像、Windows Core镜像。 当所选镜像是Windows镜像或Windows Core镜像时,系统将自动配置污点(Taints) |
节点标签(Labels) | 在集群中添加节点标签(Label)后,会自动添加到弹性伸缩扩容出的节点上。 重要 当节点标签和污点配置映射到节点池Tag后,自动伸缩才可识别,且节点池Tag存在数量上限。因此,请将开启自动伸缩的节点池配置的ECS标签、污点和节点标签的总数控制在12个之内。 |
扩缩容策略 |
|
使用按量实例补充抢占式容量 | 需同时选择付费类型为抢占式实例。 开启后,如果因价格或库存等原因无法创建足够的抢占式实例,ACK将自动尝试创建按量实例,以满足ECS实例数量要求。 |
开启抢占式实例补偿 | 开启抢占式实例补偿 需同时选择付费类型为抢占式实例。 开启后,当收到抢占式实例将被回收的系统消息时(即抢占式实例被回收前5分钟左右),开启弹性的节点池将尝试创建新的实例,替换掉将被回收的抢占式实例。 |
伸缩模式 | 需开启节点池自动伸缩且扩缩容模式为自动。
|
污点 (Taints) | 添加污点后,集群将不会将Pod调度到该节点上。 |
步骤三:(可选)结果验证
完成如上操作后,您便可以使用节点自动伸缩功能。此时,节点池将显示已开始自动伸缩且集群已自动安装cluster-autoscaler组件。
节点池已开启自动伸缩
在节点池页面,节点池列表中将展示已开启自动伸缩的节点池。
已安装cluster-autoscaler组件
在集群管理页左侧导航栏,选择 。
选择kube-system命名空间,显示cluster-autoscaler组件。
常见问题
分类 | 二级分类 | 跳转链接 |
节点自动伸缩的扩缩容行为 | ||
自定义的扩缩容行为 | ||
cluster-autoscaler组件相关 |