文档

启用节点即时弹性

更新时间:

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

阅读前提示

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

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

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

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

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

前提条件

说明

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

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

使用节点即时弹性功能前,您需要在节点池页面开启并配置集群自动弹性伸缩,使节点具备伸缩能力。配置时,请选择节点伸缩方案即时弹性

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

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

  3. 节点池页面,单击节点伸缩后方的去配置

    1.jpg

  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. 节点伸缩配置页面,选择节点伸缩方案即时弹性,配置伸缩配置项,然后单击确定

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

    配置项

    说明

    缩容阈值

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

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

    GPU 缩容阈值

    GPU实例的缩容阈值。

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

    缩容触发时延

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

    重要

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

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

    配置项

    说明

    Pod 终止超时时间

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

    Pod 最小副本数

    节点缩容前每个ReplicaSet中允许的Pod最小数量。

    是否开启 Daemonset Pod 排水

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

    跳过有 kube-system 命名空间下 Pod 所在节点

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

    说明

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

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

节点即时弹性的扩缩对象为开启自动伸缩节点池的节点。因此,配置节点即时弹性后,您还需要配置至少一个开启了弹性的节点池。

  • 新建一个开启自动弹性伸缩的节点池。具体操作,请参见创建节点池

  • 配置已有节点池,为其开启自动弹性伸缩功能。具体操作,请参见编辑节点池

    说明

    配置已有节点池时,请确保您的节点池未配置期望节点数。您可以在节点池列表进入节点池详情页面,在基本页签查看期望节点数是否为空,也可以调用DescribeClusterNodePoolDetail - 查询节点池配置接口,查询desired_size是否为nil

image

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

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

节点池已开启自动伸缩

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

已安装节点即时弹性组件

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

  2. 组件管理页面,定位ACK GOATScaler组件,显示已安装

节点即时弹性关键事件介绍

节点即时弹性涉及到以下关键事件(Event),以便查看节点即时弹性发生时内部的状态信息。

事件名称

事件对象

说明

ProvisionNode

pod

节点即时弹性触发节点扩容成功。

ProvisionNodeFailed

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重新纳入可触发扩容的范围。

相关操作

升级节点即时弹性组件

请及时升级节点即时弹性组件,以便享用最新的功能改进和特性优化。具体操作,请参见管理组件

  • 本页导读 (1)