文档

通过ACK GOATScaler组件实现节点即时弹性

更新时间:

如果您的集群规模较大(例如弹性节点池中节点数大于100,或弹性节点池数大于20)、对资源交付速度有更高要求、期望灵活实现多实例规格和跨可用区自动伸缩,那么节点自动伸缩可能无法满足您扩缩容的需求,推荐您使用节点即时弹性功能。节点即时弹性降低了开发者的使用门槛并提高了弹性效率,同时降低了运维人员维护成本。

阅读前提示

为了让您更好地使用节点即时弹性功能,建议您在阅读本文档前,已阅读节点伸缩概述并了解以下内容:

对节点即时弹性的工作原理

对节点即时弹性的功能优势

对哪些业务场景下,建议您选择节点即时弹性

对使用节点即时弹性前需要了解的注意事项

前提条件

说明

如果您的集群节点池已开启自动弹性伸缩且节点池的伸缩模式为非极速模式节点即时弹性可兼容原弹性节点池的语义与行为,并支持所有类型的应用无感开启与使用。但针对伸缩模式极速模式的节点池,节点即时弹性无法兼容。

步骤一:开启节点即时弹性

使用节点即时弹性功能前,您需要在节点池页面开启并配置集群自动弹性伸缩,使节点具备伸缩能力。配置时,请选择伸缩组件为ACK GOATScaler组件,即节点即时弹性的实现组件。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

  3. 节点池页面,单击集群自动弹性伸缩后面的去配置

    image.png

  4. 首次使用集群自动弹性伸缩功能时,按照页面提示,开通ESS服务并完成授权(如已授权,请跳过)。

    展开查看服务开通及授权步骤

    说明

    以下开通ESS服务的操作仅供参考,实际请按照界面提示操作。

    1. 单击提示对话框中弹性伸缩(Auto Scaling)链接,进入弹性伸缩服务ESS页面,根据页面提示开通ESS服务。

    2. 开通成功后,在开通完成页签,单击管理控制台,进入弹性伸缩服务ESS页面。

    3. 单击前往授权,进入云资源访问授权页面,配置对云资源的访问权限,单击同意授权

      说明
      • 如果您的集群为ACK专有集群,请根据页面引导对每个集群授权AliyunCSManagedAutoScalerRolePolicy

      • 如果您的集群为ACK托管集群,请确保kube-system命名空间下保密字典内有addon.aliyuncsmanagedautoscalerrole.token。如果没有,请提交工单

        没有Token时,ACK默认通过WorkRole实现相关能力。您可以参见如何为集群WorkerRole添加AliyunCSManagedAutoScalerRolePolicy权限?,尝试通过为集群WorkerRole添加AliyunCSManagedAutoScalerRolePolicy权限的方法来解决。

  5. 集群自动弹性伸缩配置页面,选择伸缩组件GOATScaler,配置伸缩配置项,然后单击确定

    实施弹性伸缩时,弹性组件会基于调度情况自动触发扩容。您只需配置缩容条件。

    配置项

    说明

    缩容阈值

    启用节点即时弹性的节点池中,单个节点的请求资源(Request)与单个节点资源容量的比值。

    仅当该比值低于配置的阈值时,即节点的CPU和内存资源利用率均低于缩容阈值时,节点才有可能被缩容。

    GPU 缩容阈值(暂不支持)

    GPU实例的缩容阈值。

    仅当该比值低于配置的阈值时,即节点的CPU、内存和GPU资源利用率均低于GPU 缩容阈值时,GPU节点才有可能被缩容。

    缩容触发时延

    从检测到有缩容需求(达到缩容阈值)到实际执行缩容操作(缩容Pod数量)之间的时间间隔。单位:分钟。默认值:10分钟。

    重要

    仅当满足缩容阈值配置,且达到缩容触发时延后,弹性组件才有可能执行节点缩容。

    静默时间

    距离最近一次扩容完成后,弹性组件不执行缩容的时间间隔。

    在静默时间内,弹性组件不会缩容节点,但仍会判断节点是否可以缩容;超过静默时间后,如果节点满足缩容阈值和缩容触发时延两个条件,弹性组件则会正常执行缩容。例如,当静默时间为10分钟,缩容触发时延为5分钟时,弹性组件在最近一次扩容后的10分钟内不会缩容节点,但会在静默的10分钟内判断节点是否符合缩容条件。等待静默时间结束,节点达到缩容阈值且时间超过缩容触发时延规定的5分钟时,弹性组件会继续执行缩容。

    查看高级配置的配置项说明

    配置项

    说明

    Pod终止超时时间

    缩容节点时等待节点上Pod终止的最长时间。单位:秒。

    Pod最小副本数

    节点排水时每个ReplicaSet中允许的Pod最小数量。

    是否开启Daemonset Pod排水

    开启Daemonset Pod排水后,节点缩容时会驱逐节点上的Daemonset Pod。

    是否跳过有kube-system Pod所在节点

    开启后,当集群执行节点自动缩容操作时,可以忽略运行在kube-system命名空间下的Pod所在的节点。

    说明

    此功能对DaemonSet Pod和Mirror Pod不生效。

步骤二:配置开启弹性的节点池

节点即时弹性的扩缩对象为开启自动伸缩节点池的节点。因此,配置节点即时弹性后,您还需要配置至少一个开启了弹性的节点池。您可以新建一个开启自动弹性伸缩的节点池,也可以配置已有节点池,为其开启自动弹性伸缩功能。具体操作,请参见创建节点池编辑节点池

image

(可选)步骤三:结果验证

完成如上操作后,您便可以使用节点即时弹性功能。此时,节点池将显示已开启自动伸缩且集群已自动安装ACK GOATScaler组件

节点池已开启自动伸缩

节点池页面,显示已开启自动伸缩的节点池。

image

已安装ACK GOATScaler组件

  1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  2. 在组件管理页面,定位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)
文档反馈