创建和管理灵骏节点池

更新时间:
复制为 MD 格式

本文介绍如何在ACK托管集群Pro添加灵骏节点池的相关操作。

ACK托管集群Pro的灵骏节点池功能为白名单功能。如需开通,请通过客户服务经理(PDSA)联系容器服务团队。

灵骏节点池简介

  • ACK托管集群Pro中的“灵骏节点池”与智能计算灵骏服务(灵骏裸金属集群)的节点分组为一对一的对应关系,即一个灵骏集群的节点分组可以对应一个ACK托管集群Pro的灵骏节点池,意味着一个灵骏节点只能属于一个灵骏节点池。根据灵骏节点池的划分,可以实现对ACK托管集群Pro中的灵骏节点进行不同的管理。

  • ACK托管集群Pro通过灵骏节点池的形式管理灵骏节点,支持节点池生命周期管理以及节点批量添加和移除,提供与ECS节点池基本一致的管理和运维能力,包括节点配置、节点运维、调度应用至指定节点池,以及监控诊断和自动化运维等能力。

  • 如果需要为灵骏节点提供云原生AI的增强能力,请安装云原生AI套件。灵骏节点池支持多GPU卡的拓扑感知调度,结合GPU容器虚拟化方案提供共享GPU调度和隔离;针对AI、HPC等任务特点,支持Gang、Capacity、Binpack等任务调度策略;还支持数据集编排和访问加速。

计费说明

ACK托管集群Pro中使用灵骏节点池时,费用由三部分组成:集群管理费 + 灵骏节点管理费用 + 云产品资源费

说明

20250805起,灵骏节点管理能力结束免费邀测,并正式开启商业化收费,更多信息,请参见【收费公告】灵骏节点管理收费公告。邀测期间,灵骏节点池的功能可以免费使用,ACK托管集群Pro的其他费用(集群管理费和云产品资源费)仍然正常收取,请参见 计费概述

准备工作

创建灵骏节点池时,需已完成如下准备工作:

  • 灵骏集群与节点:

    • 灵骏集群:已创建集群类型为Lite的基础灵骏集群服务,并在灵骏节点分组中完成节点扩容。详见创建灵骏集群

    • 灵骏节点

      • OS kernel 版本:5.10 及以上。

      • OS cgroup 版本:Kubernetes 社区自 1.26 版本起开始支持 cgroup v2,自 1.35 版本起废弃对 cgroup v1 的支持。若集群版本为 1.35 及以上,节点需为使用 cgroup v2 的操作系统镜像,使用cgroup v1操作系统的节点将无法添加到ACK集群中。

        1.35以下版本的ACK集群升级至1.35及以上版本时,需使用cgroup v2的操作系统,否则将无法进行集群升级。详见将节点迁移至 cgroup v2

  • ACK托管集群Pro

    • 集群类型:Pro版集群,与灵骏裸金属集群在相同地域及相同VPC下。

    • 集群版本:1.31及以上版本,仅支持 IPv4 单栈集群,不支持 IPv6 双栈集群。如需升级,详见手动升级集群

    • 网络插件:仅支持Terway。

      • 不同灵骏机型的底层网络存在差异,低版本 Terway 可能不兼容。建议新建灵骏节点池前,将Terway(terway-controlplaneterway-eniip)升级至最新版本。

      • 需确保 ACK 集群灵骏节点池使用的Pod 交换机包含灵骏集群所在的可用区。

        ACK 集群的Pod 交换机支持在创建集群时配置。创建ACK集群后,添加灵骏节点前,也支持通过修改terway-eniip 参数PodVswitchId来配置。操作流程,请参见修改Pod虚拟交换机
    • 组件:

      • 通过组件管理页面安装ack-rdma-device-plugin组件。

      • 若灵骏节点使用灵骏连接,则需单独申请ACK VPD CNI组件白名单,在创建灵骏节点池前,通过组件管理页面安装ACK VPD CNI组件。

        创建包含灵骏连接节点的节点池时,ACK 将自动完成两项操作:在集群安全组中添加灵骏分组的网段,并允许入方向访问;为节点池添加标签 alibabacloud.com/lingjun-network-type: vpd,请勿删除。
    • ECS节点:集群中已创建ECS节点池,保有ECS节点(建议 3 个及以上以保证高可用),用于部署部分ACK管控组件。

创建灵骏节点池

可在控制台完成节点池配置,包括基本配置、网络配置、存储配置等。部分配置项(尤其是节点池可用性相关和网络相关的配置)创建后不支持修改,请重点关注。创建节点池不影响已有节点池内的节点和业务。

创建前请注意

  • 灵骏节点池默认将容器运行时数据存储到系统盘,请确保为容器运行时目录预留充足可用空间,若磁盘空间不足将导致 Pod 驱逐或节点异常。

  • 新建灵骏节点池的 VPC 网络通信将默认使用Terway独占ENI模式,请确认单节点Pod数限额满足业务需求。

  • 灵骏节点池中的节点默认携带 Taint node-role.alibabacloud.com/lingjun: NoSchedule,避免系统组件(非 DaemonSet)调度到灵骏节点上占用资源。

    若 Pod 需调度到灵骏节点,可为 Pod 添加对该Taint的容忍,实现仅特定工作负载调度到灵骏节点的效果。也可以根据业务需求,换为自定义Taint,实现相同效果。

    可在组件满足最低版本要求后删除 Taint,但删除Taint后,系统组件或者其他工作负载可能调度到灵骏节点,占用昂贵的 GPU 节点资源。

  • 节点池默认携带的完整Label列表,请参见下文节点标签(Labels)配置项说明。请勿删除默认 Label。

操作步骤

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

  2. 单击... > 创建灵骏节点池,按照页面提示完成灵骏节点池的创建。

    节点池创建后,部分配置项可通过编辑节点池修改。下表中,是否支持修改代表节点池创建后对应的配置项是否支持修改。

    展开查看详细配置说明

    • 基础配置

      配置项

      说明

      是否支持修改

      节点池名称

      自定义的节点池名称。

      地域

      默认选择当前集群所在地域,不可更改。

      托管配置

      白名单功能

      启用托管节点池,使用ACK提供的自动化运维能力。

      容器运行时

      仅支持containerd。

    • 灵骏资源

      配置项

      说明

      是否支持修改

      灵骏集群

      可选择与ACK集群位于相同VPCLite类型的灵骏集群。

      灵骏分组

      可选择与灵骏节点池位于相同VPC且未关联灵骏节点池的灵骏分组。

    • 存储

      自定义数据盘配置为白名单功能。如需开通,请通过客户服务经理(PDSA)联系容器服务团队。
      重要
      • 节点池升级期间,若节点存储配置不一致,将按各节点的实际配置分别初始化。

      • 为保障稳定性,请确保为容器运行时目录预留充足可用空间,本地存储有丢失数据的风险,强烈建议使用云盘挂载容器运行时目录。

      配置项

      说明

      是否支持修改

      系统盘

      当前灵骏分组下节点的云盘系统盘配置。使用本地系统盘时,此处不展示具体配置。
      若未勾选配置本地盘挂载容器运行时目录,容器运行时目录默认挂载到系统盘。

      重要

      当容器运行时数据存储在系统盘时,若磁盘空间不足将导致 Pod 驱逐或节点异常。为保障稳定性,请确保系统盘预留充足可用空间,或者配置独立数据盘用于容器运行时。

      可参见节点磁盘空间不足-DiskPressure了解节点磁盘空间不足的解决方案。

      不涉及

      数据盘

      灵骏节点使用的本地数据盘。勾选配置本地盘挂载容器运行时目录后,本地盘将挂载为容器运行时占用目录,包括 /var/lib/container/var/lib/containerd/var/lib/kubelet 以及 /var/log/pods 等目录。

      可配置初始化设置:选择文件系统格式化方式(ext4 或 xfs)。仅对未格式化的本地盘生效。

      重要
      • 挂载目录须为空。非空目录挂载后,原有文件将无法访问。

      • 本地存储有丢失数据的风险。强烈建议使用云盘挂载容器运行时目录。启用本功能时,请勿同时通过 ACK 实例预自定义数据或灵骏自定义数据(UserData)功能配置容器运行时目录,否则可能引发异常。

      • 灵骏节点在下线维修(备机替换)时,不保留本地盘数据,可能会导致kubelet、containerd等容器运行时信息被清除,节点状态异常。维修完成后,需手动将其从节点池移除,并通过添加已有节点重新加入灵骏节点池。

    • 高级选项(选填)

      配置项

      说明

      是否支持修改

      污点 (Taints)

      为节点添加键值对污点。有效污点键包含前缀(可选)和名称。如果有前缀,用正斜线(/)分隔。

      展开查看详细说明

      • :名称长度为1~63个字符,必须以字母、数字或字符[a-z0-9A-Z]开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。

        如果指定前缀,必须为DNS子域,即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,并以正斜线(/)结尾。

      • :污点值可以为空,不超过63个字符,必须以字母、数字或字符[a-z0-9A-Z]开头和结尾,可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。

      • Effect

        • NoSchedule:不接受任何新的、不容忍此污点的Pod被调度到该节点,但已在运行的Pod不受影响。

        • NoExecute:不仅不接受任何新的、不容忍此污点的Pod被调度到该节点,还会驱逐节点上任何已在运行的、不容忍此污点的Pod。

        • PreferNoSchedule:ACK会尽量避免将Pod调度到存在其不能容忍污点的节点上,但不会强制执行。

      节点标签(Labels)

      重要

      创建灵骏节点池时,ACK将自动为节点池添加标签以启用独占ENI模式,创建后请勿删除。

      不允许删除灵骏节点池默认添加的Label:

      • service.alibabacloud.com/exclude-node

      • alibabacloud.com/lingjun-worker

      • alibabacloud.com/lingjun-hpnzone

      • alibabacloud.com/lingjun-zoneid

      • alibabacloud.com/lingjun-network-type: vpd

      • alibabacloud.com/lingjun-machine-type

      • k8s.aliyun.com/exclusive-mode-eni-type: eniOnly

      为节点添加键值对标签。有效Key包含前缀(可选)和名称。如有前缀,前缀和名称之间用正斜线(/)分隔。

      展开查看详细说明

      • Key:名称长度为1~63个字符,必须以字母数字字符[a-z0-9A-Z]开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。

        如果指定前缀,必须为DNS子域,即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,以正斜线(/)结尾。

        以下前缀由Kubernetes核心组件保留,不支持指定

        • kubernetes.io/

        • k8s.io/

        • kubernetes.io/k8s.io/结尾的前缀。例如test.kubernetes.io/

          以下除外:

          • kubelet.kubernetes.io/

          • node.kubernetes.io

          • kubelet.kubernetes.io/结尾的前缀。

          • node.kubernetes.io结尾的前缀。

      • Value:可以为空,不超过63个字符,必须以字母数字字符[a-z0-9A-Z]开头和结尾,可包含字母、数字、短划线(-)、下划线(_)和英文半角句号(.)。

      容器镜像加速

      仅支持版本为1.6.34及以上的containerd运行时。

      新添加的节点将自动识别容器镜像是否支持按需加载功能,若支持则默认通过按需加载加速容器启动,以缩短应用启动时间,详情请参见使用按需加载容器镜像加速容器启动

      自定义节点名称

      白名单功能,不适用于非灵骏节点池
      • 说明:将灵骏节点的 Hostname 直接同步为节点的 NodeName。

      • 示例: 实例 Hostname 为 test,则节点 NodeName 为 test

      实例预自定义数据

      节点加入集群前,将运行指定的实例预自定义User-Data脚本

      例如,指定预自定义数据为 touch /tmp/pre-script,则节点上组合后的脚本执行顺序如下。

      #!/bin/bash
      # 输入的实例预自定义数据在此处执行
      touch /tmp/pre-script
      
      # ACK节点初始化脚本在此处执行

      实例自定义数据

      节点加入集群后,将运行指定的实例自定义User-Data脚本

      例如,指定实例自定义数据为 touch /tmp/post-script,则节点上组合后的脚本执行顺序如下。

      #!/bin/bash
      # ACK节点初始化脚本在此处执行
      
      # 输入的实例自定义数据在此处执行
      touch /tmp/post-script
      创建集群或扩容节点成功不代表实例自定义脚本执行成功。可登录节点执行grep cloud-init /var/log/messages查看执行日志。

添加已有灵骏节点

如需将灵骏分组中的灵骏节点添加到ACK集群中作为Worker节点,或将移除的Worker节点重新加入灵骏节点池,可在容器服务管理控制台,将灵骏节点池关联的分组中的灵骏节点,批量添加到灵骏节点池中。添加后,可在节点池维度进行统一管理。

添加灵骏节点不替换节点原有的操作系统、系统盘和数据盘,存储数据仍然保留。

适用范围

  • 待添加的节点实例须已在本节点池关联的灵骏分组中,且未加入其他节点池。

  • 灵骏节点的(OperatingState)状态为使用中(Using)状态。

操作步骤

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

  2. 节点池页面,单击⋮ > 添加已有节点,按照页面提示完成以下配置:

    • 添加已有灵骏节点实例:在实例列表选择待添加的实例。勾选显示不可用的实例可查看当前不可用的实例。

    • 数据盘挂载:选择数据盘的挂载方式。

      仅在已开通自定义数据盘配置白名单时开放
      • 按节点池配置:使用节点池预设的数据盘配置初始化并挂载数据盘。

        若节点池未预设数据盘配置,则保留节点原有配置。
      • 不初始化:不对数据盘进行初始化操作,保留节点原有数据盘配置。

        重要
        • 若各节点的存储配置不同,节点池升级期间,系统将按各节点的实际存储配置分别初始化数据盘,而非使用统一配置。

        • 使用按节点池配置时,挂载目录须为空。非空目录挂载后,原有文件将无法访问。

    添加完成后,ACK会自动在灵骏节点实例上添加以下标签,可在智能计算灵骏控制台查看:

    • ack.aliyun.com:纳管该节点的ACK托管集群ProID。

    • ack.alibabacloud.com/nodepool-id:纳管该节点的灵骏节点池ID。

移除灵骏节点

当不再需要某节点继续工作时,可将该节点从节点池中移除。移除操作可能影响业务,建议在业务低峰期进行。

注意事项

  • 排空节点:

    • 节点上存在 Pod 时,请勾选自动排空节点(drain),并确保集群资源充足,Pod 将自动迁移到其他节点。

    • 若应用配置了PDB,可能导致排空失败,进而导致移除失败。建议提前手动处理。

    • 排空后,若应用在其他节点上无法正常启动,移除任务将忽略此情况并继续执行。

    • 移除异常状态的节点时,请勿勾选自动排空节点(drain),否则可能导致移除失败。

  • 移除后的节点状态:

    移除灵骏节点仅将节点从灵骏节点池移出,不会将节点从灵骏分组中移出,也不会自动释放或退订节点。

    添加到节点池的灵骏节点实例不会随 ACK 集群或灵骏节点池的删除而释放,也不会从灵骏分组中自动缩容。请关注灵骏节点的计费状态,避免产生额外费用。

    如需进行更多节点与分组的管理操作,请前往智能计算灵骏控制台操作。

    移除为异步操作,请在节点列表中查看移除进度。

操作步骤

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

  2. 单击目标灵骏节点池名称,在节点管理页面移除节点。

    • 单个节点移除:定位目标节点,在该节点右侧操作列,选择更多 > 移除

    • 批量节点移除:选中目标节点,单击页面下方的批量移除

  3. 选择是否需要自动排空节点(drain),仔细阅读页面注意事项后按照页面提示完成操作。

使用Terway独占ENI模式

使用Terway时,灵骏节点池仅支持独占ENI网络模式(Terwayv1.14.4起支持)。为兼容不同灵骏机型底层网络的差异,建议您确保Terway版本在v1.16.1及以上,若低于此版本,请参见下文的升级组件升级terway-eniip

创建灵骏节点池时,ACK将自动为节点池添加标签k8s.aliyun.com/exclusive-mode-eni-type: eniOnly,以启用独占ENI模式,创建后请勿删除。详见为节点池配置独占ENI网络模式

如果灵骏节点池未添加该标签,则表明该节点池使用了共享ENI网络模式。
重要

在灵骏节点通过共享ENI模式使用VPC网络通信时,部分灵骏旧版本镜像存在偶发Pod网络不通的风险,可通过重建Pod临时恢复业务运行。如需彻底解决该问题,建议在业务空闲期升级Terway组件至最新版本,通过重新创建独占ENI模式的灵骏节点池来添加灵骏节点。

使用RDMA功能

为启用灵骏节点的RDMA通信,可在组件管理页面手动安装ack-rdma-device-plugin组件。

Pod可用的网络模式,取决于灵骏节点池关联的灵骏裸金属集群的计算网络IP版本。详见Pod在灵骏节点使用RDMA网络

计算网络IP版本

配置说明

IPv4

仅支持hostNetwork模式

IPv6

  • hostNetwork模式:默认。

  • hostNetwork 模式:如需启用,需在ack-rdma-device-plugin组件配置中,开启允许Pod通过hostNetwork模式使用RDMA。

升级组件

新建ACK托管集群Pro时默认使用最新组件版本。在存量集群中创建灵骏节点池时,如果已使用以下组件,请升级组件至指定版本。

组件名称

最低版本要求

Kube Scheduler

v1.31

terway-eniip

v1.16.1

不同灵骏机型的底层网络存在差异,低版本 Terway 可能不兼容。建议新建灵骏节点池前,将Terway(terway-controlplaneterway-eniip)升级至最新版本。

CoreDNS

v1.11.3.5-5321daf49-aliyun

Nginx Ingress Controller

v1.11.4-aliyun.2

ack-pod-identity-webhook

v0.2.1

security-inspector

v0.16.1.0-gea4d02f-aliyun

alicloud-monitor-controller

v1.8.4

ack-arms-prometheus

v1.1.31

logtail-ds

v2.1.6

csi-provisioner

v1.32.2

csi-plugin

v1.32.2

aliyun-acr-acceleration-suite

v0.2.10

ack-ai-installer(应用 > 云原生AI套件安装)

v1.12.2

灵骏节点常见运维场景

以下介绍灵骏节点在各运维场景中,对应的ACK侧操作流程。

场景

说明

灵骏节点更换分组

  1. ACK: 从ACK集群中移除灵骏节点

    可根据业务需求,自行选择移除节点时是否同时自动排空节点(drain)。排水成功依赖集群中存在可以容纳被驱逐Pod的目标节点,请在排水前确认资源充足。

  2. 灵骏: 将节点从原分组缩容新建分组后将节点扩容至新分组。

  3. ACK: 创建新灵骏节点池时关联新分组。对灵骏侧完成扩容的节点(灵骏控制台节点状态变为使用中),通过添加已有节点重新加入灵骏节点池。

灵骏节点重启

  1. 灵骏: 重启节点

  2. ACK: 无需操作。重启期间节点将短暂离线,重启完成后(灵骏控制台节点状态变为使用中),ACK集群的节点状态自动变为Ready(就绪)状态。

灵骏节点重装

  1. ACK: 从ACK集群中移除灵骏节点

    可根据业务需求,自行选择移除节点时是否同时自动排空节点(drain)。排水成功依赖集群中存在可以容纳被驱逐Pod的目标节点,请在排水前确认资源充足。

  2. 灵骏: 重装节点

  3. ACK: 待灵骏侧重装完成后(灵骏控制台节点状态变为使用中),通过添加已有节点重新加入灵骏节点池。

灵骏下线维修(备机替换)

  1. 灵骏: 在CMS运维事件(灵骏审批运维操作能力)中完成授权,同意执行维修操作。

  2. ACK:

    • 若容器运行时数据目录挂载到云盘,ACK侧无需操作,灵骏节点维修完成后(灵骏控制台节点状态变为使用中),ACK集群的节点状态自动变为Ready(就绪)状态。

    • 若容器运行时数据目录挂载到本地盘,由于灵骏节点下线维修期间将进行换机操作,不会保留本地盘数据,将导致kubelet、containerd等容器运行时信息被清除,节点状态异常。灵骏节点维修完成后(灵骏控制台节点状态变为使用中),需手动将其从节点池移除,并通过添加已有节点重新加入灵骏节点池。

更多操作

  • 使用共享GPU调度。

    如需在ACK托管集群Pro中的灵骏节点上使用共享GPU调度,实现GPU的共享和隔离能力,需要先在灵骏裸金属集群中开启 KuberGPU能力,再在ACK集群中安装ack-ai-installer。具体使用方法,请参见使用共享GPU调度

  • 开启Binpack调度策略。

    在灵骏节点池运行模型训练任务,您可以在Pod调度时启用Binpack策略,即开启Pod调度时启用优先集中放置策略,以减少训练过程中的跨机通信延迟,关于如何在Kube Scheduler组件中开启binpack,请参见自定义调度器参数

  • 在灵骏节点池使用网络拓扑感知调度。

    如果需要在灵骏节点池使用网络拓扑感知调度,请安装Kube Scheduler,并升级至v1.31及以上,详细操作可参考使用网络拓扑感知调度

FAQ

维修后节点仍是未就绪(Not Ready)状态

灵骏节点由于硬件问题进行了下线维修,但维修完成后,ACK集群中节点状态仍然是未就绪(Not Ready)状态。

  • 原因:灵骏节点下线维修期间将进行换机操作,不保留本地盘数据,可能会导致kubelet、containerd等容器运行时信息被清除,节点状态异常。

  • 解决方案:维修完成后,需手动将其从节点池移除,并通过添加已有节点重新加入灵骏节点池。