如果您的集群规模较大(例如弹性节点池中节点数大于100,或弹性节点池数大于20)、对资源交付速度有更高要求、期望灵活实现多实例规格和跨可用区自动伸缩,那么节点自动伸缩可能无法满足您扩缩容的需求,推荐您使用节点即时弹性功能。节点即时弹性降低了开发者的使用门槛并提高了弹性效率,同时降低了运维人员维护成本。
阅读前提示
为了让您更好地使用节点即时弹性功能,建议您在阅读本文档前,已阅读节点伸缩概述并了解以下内容:
节点即时弹性的工作原理
节点即时弹性的功能优势
哪些业务场景下,建议您选择节点即时弹性
使用节点即时弹性前需要了解的注意事项
前提条件
已创建v1.26及以上的ACK托管集群、ACK专有集群。相关操作,请参见创建Kubernetes托管版集群、创建Kubernetes专有版集群、手动升级集群。
已获得节点即时弹性白名单权限。如需使用,请提交工单并描述您的业务场景进行申请。
如果您的集群节点池已开启自动弹性伸缩且节点池的伸缩模式为非极速模式,节点即时弹性可兼容原弹性节点池的语义与行为,并支持所有类型的应用无感开启与使用。但针对伸缩模式为极速模式的节点池,节点即时弹性无法兼容。
步骤一:开启节点即时弹性
使用节点即时弹性功能前,您需要在节点池页面开启并配置集群自动弹性伸缩,使节点具备伸缩能力。配置时,请选择伸缩组件为ACK GOATScaler组件,即节点即时弹性的实现组件。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在节点池页面,单击集群自动弹性伸缩后面的去配置。
首次使用集群自动弹性伸缩功能时,按照页面提示,开通ESS服务并完成授权(如已授权,请跳过)。
在集群自动弹性伸缩配置页面,选择伸缩组件为GOATScaler,配置伸缩配置项,然后单击确定。
实施弹性伸缩时,弹性组件会基于调度情况自动触发扩容。您只需配置缩容条件。
配置项
说明
缩容阈值
启用节点即时弹性的节点池中,单个节点的请求资源(Request)与单个节点资源容量的比值。
仅当该比值低于配置的阈值时,即节点的CPU和内存资源利用率均低于缩容阈值时,节点才有可能被缩容。
GPU 缩容阈值(暂不支持)
GPU实例的缩容阈值。
仅当该比值低于配置的阈值时,即节点的CPU、内存和GPU资源利用率均低于GPU 缩容阈值时,GPU节点才有可能被缩容。
缩容触发时延
从检测到有缩容需求(达到缩容阈值)到实际执行缩容操作(缩容Pod数量)之间的时间间隔。单位:分钟。默认值:10分钟。
重要仅当满足缩容阈值配置,且达到缩容触发时延后,弹性组件才有可能执行节点缩容。
静默时间
距离最近一次扩容完成后,弹性组件不执行缩容的时间间隔。
在静默时间内,弹性组件不会缩容节点,但仍会判断节点是否可以缩容;超过静默时间后,如果节点满足缩容阈值和缩容触发时延两个条件,弹性组件则会正常执行缩容。例如,当静默时间为10分钟,缩容触发时延为5分钟时,弹性组件在最近一次扩容后的10分钟内不会缩容节点,但会在静默的10分钟内判断节点是否符合缩容条件。等待静默时间结束,节点达到缩容阈值且时间超过缩容触发时延规定的5分钟时,弹性组件会继续执行缩容。
步骤二:配置开启弹性的节点池
节点即时弹性的扩缩对象为开启自动伸缩节点池的节点。因此,配置节点即时弹性后,您还需要配置至少一个开启了弹性的节点池。您可以新建一个开启自动弹性伸缩的节点池,也可以配置已有节点池,为其开启自动弹性伸缩功能。具体操作,请参见创建节点池、编辑节点池。
(可选)步骤三:结果验证
完成如上操作后,您便可以使用节点即时弹性功能。此时,节点池将显示已开启自动伸缩且集群已自动安装ACK GOATScaler组件。
节点池已开启自动伸缩
在节点池页面,显示已开启自动伸缩的节点池。
已安装ACK GOATScaler组件
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在组件管理页面,定位ACK GOATScaler组件,显示已安装。
节点即时弹性关键事件介绍
节点即时弹性涉及到以下关键事件(Event),以便查看节点即时弹性发生时内部的状态信息。
事件名称 | 事件对象 | 说明 |
ProvisionNode | pod | 节点即时弹性触发Pod扩容成功。 |
ProvisionNodeFailed | pod | 节点即时弹性触发Pod扩容失败。 |
ResetPod | pod | 节点即时弹性将满足条件的、已触发过扩容的、但仍不可调度的Pod重新纳入可触发扩容的范围。 |
节点即时弹性标识介绍
节点即时弹性维护了以下标识。请勿手动操作,以免引发异常。
Node Label
node label | 说明 |
goatscaler.io/managed:true | 用于标识被节点即时弹性管理的节点。针对带此标签的节点,节点即时弹性会周期性检查是否满足缩容条件。 |
k8s.aliyun.com: true | 用于标识被节点即时弹性管理的节点的标识,针对带此标签的节点,节点即时弹性会周期性检查是否满足缩容条件。 |
goatscaler.io/provision-task-id:{task-id} | 用于标识节点即时弹性扩容节点的任务Task ID,以便您追踪创建节点的触发源。 |
Node Taint
Node Taint | 说明 |
goatscaler.io/node-terminating | 打上此污点的节点会被节点即时弹性执行缩容。 |
Pod Annotation
Pod Annotation | 说明 |
goatscaler.io/provision-task-id | 用于标识节点即时弹性为此Pod扩容后节点的Task ID。针对有此Annotation的Pod,节点即时弹性会等待节点启动,暂不重复扩容。 |
goatscaler.io/reschedule-deadline | 节点即时弹性等待Pod节点资源供给的截止时间。超出此时间后,若Pod仍然不可调度,节点即时弹性会将Pod重新纳入可触发扩容的范围。 |
相关操作
升级ACK GOATScaler组件
请及时升级ACK GOATScaler组件,以便享用最新的功能改进和特性优化。具体步骤,请参见管理组件。
- 本页导读 (1)