本文介绍灵骏节点池的常见操作流程,包括创建节点池、添加和移除节点、升级kubelet等,以及常见运维场景的处理方式。
适用范围
灵骏集群类型:基础灵骏集群服务(Lite)。
ACK 集群类型:ACK托管集群Pro版 1.31及以上版本。如需升级,详见手动升级集群。
ACK 集群灵骏节点池:
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 集群网络:
仅支持 IPv4 单栈集群,不支持 IPv6 双栈集群。
仅支持 Terway 独占 ENI 模式。
不同灵骏机型的底层网络存在差异,低版本 Terway 可能不兼容。建议新建灵骏节点池前,将Terway(terway-controlplane和terway-eniip)升级至最新版本。
需确保 ACK 集群灵骏节点池使用的Pod 交换机包含灵骏集群所在的可用区。
ACK 集群的Pod 交换机支持在创建集群时配置。创建ACK集群后,添加灵骏节点前,也支持通过修改terway-eniip 参数PodVswitchId来配置。操作流程,请参见修改Pod虚拟交换机。
ACK 集群组件版本:
新建ACK托管集群Pro版时默认使用最新组件版本。在存量集群中创建灵骏节点池时,如果已使用以下组件,请升级组件至指定版本。
准备工作
创建灵骏集群。选择基础灵骏集群服务,并在灵骏节点分组中添加节点。
创建ACK托管集群。选择Pro版,需与灵骏集群处在相同地域和相同VPC下。
创建ECS节点池。可在创建ACK托管集群时配置,建议保有 3 个及以上ECS节点,用于部署部分ACK管控组件,以保证高可用。
安装ACK集群组件。
通过组件管理页面安装ack-rdma-device-plugin组件。
若灵骏节点使用灵骏连接,则需单独申请ACK VPD CNI组件白名单,在创建灵骏节点池前,通过组件管理页面安装ACK VPD CNI组件。
重要创建包含灵骏连接节点的节点池时,ACK 将自动完成两项操作:在集群安全组中添加灵骏分组的网段,并允许入方向访问;为节点池添加标签
alibabacloud.com/lingjun-network-type: vpd,请勿删除。
创建灵骏节点池
可在控制台完成节点池配置,包括基本配置、网络配置、存储配置等。部分配置项(尤其是节点池可用性相关和网络相关的配置)创建后不支持修改,请重点关注。创建节点池不影响已有节点池内的节点和业务。
创建前请注意
灵骏节点池默认将容器运行时数据存储到系统盘,请确保为容器运行时目录预留充足可用空间,若磁盘空间不足将导致 Pod 驱逐或节点异常。
新建灵骏节点池的 VPC 网络通信仅支持使用Terway独占ENI模式,请确认单节点Pod数限额满足业务需求。
灵骏节点池中的节点默认携带污点(Taint)
node-role.alibabacloud.com/lingjun: NoSchedule,避免系统组件(非 DaemonSet)调度到灵骏节点上占用资源。若 Pod 需调度到灵骏节点,可为 Pod 添加对该Taint的容忍,实现仅特定工作负载调度到灵骏节点的效果。也可以根据业务需求,换为自定义Taint,实现相同效果。可在组件满足最低版本要求后删除 Taint,但删除Taint后,系统组件或者其他工作负载可能调度到灵骏节点,占用昂贵的 GPU 节点资源。
节点池默认携带的完整标签列表,请参见节点标签(Labels)配置项说明。请勿删除默认 Label。
操作步骤
在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。
单击... > 创建灵骏节点池,按照页面提示完成灵骏节点池的创建。
节点池创建后,部分配置项可通过编辑节点池修改。下表中,是否支持修改代表节点池创建后对应的配置项是否支持修改。
基础配置
配置项
说明
是否支持修改
节点池名称
自定义的节点池名称。
是
地域
默认选择当前集群所在地域,不可更改。
否
托管配置
白名单功能
启用托管节点池,使用ACK提供的自动化运维能力。
是
容器运行时
仅支持containerd。
否
灵骏资源
配置项
说明
是否支持修改
灵骏集群
可选择与ACK集群位于相同VPC的Lite类型的灵骏集群。
否
灵骏分组
可选择与灵骏节点池位于相同VPC且未关联灵骏节点池的灵骏分组。
否
存储
自定义数据盘配置为白名单功能,可使用本功能将容器运行时目录挂载到本地数据盘。如需开通,请通过客户服务经理(PDSA)联系容器服务团队。
重要节点池升级期间,若节点存储配置不一致,将按各节点的实际配置分别初始化。
为保障稳定性,请确保为容器运行时目录预留充足可用空间,本地存储有丢失数据的风险,强烈建议使用云盘系统盘挂载容器运行时目录。
配置项
说明
是否支持修改
系统盘
当前灵骏分组下节点的云盘系统盘配置。使用本地系统盘时,此处不展示具体配置。
若未勾选配置本地盘挂载容器运行时目录,容器运行时目录默认挂载到系统盘(本地系统盘或云盘系统盘)。重要当容器运行时数据存储在系统盘时,若磁盘空间不足将导致 Pod 驱逐或节点异常。为保障稳定性,请确保系统盘预留充足可用空间,或者配置独立数据盘用于容器运行时。请参见节点磁盘空间不足-DiskPressure了解节点磁盘空间不足的解决方案。
不涉及
数据盘
灵骏节点使用的本地数据盘。勾选配置本地盘挂载容器运行时目录后,将随机使用一块本地数据盘将挂载为容器运行时占用目录,包括
/var/lib/container、/var/lib/containerd、/var/lib/kubelet以及/var/log/pods等目录。可配置初始化设置:选择文件系统格式化方式(ext4 或 xfs)。仅对未格式化的本地盘生效。
是
高级选项(选填)
Terway独占ENI模式说明
灵骏节点池仅支持 Terway 独占 ENI 模式(Terway 自 v1.14.4 起支持)。为兼容不同灵骏机型和镜像的底层网络差异,建议将 Terway 升级至 v1.16.8 及以上,请参见最低版本要求升级terway-eniip。
创建灵骏节点池时,ACK将自动为节点池添加标签k8s.aliyun.com/exclusive-mode-eni-type: eniOnly,以启用独占ENI模式,创建后请勿删除。详见为节点池配置独占ENI网络模式。
如果灵骏节点池未添加该标签,则表明该节点池使用了共享ENI网络模式。
在灵骏节点通过共享ENI模式使用VPC网络通信时,部分灵骏旧版本镜像存在偶发Pod网络不通的风险,可通过重建Pod临时恢复业务运行。如需彻底解决该问题,建议在业务空闲期升级Terway组件至最新版本,通过重新创建独占ENI模式的灵骏节点池来添加灵骏节点。
添加已有灵骏节点
如需将灵骏分组中的灵骏节点添加到ACK集群中作为Worker节点,或将移除的Worker节点重新加入灵骏节点池,可在容器服务管理控制台,将灵骏节点池关联的分组中的灵骏节点,批量添加到灵骏节点池中。添加后,可在节点池维度进行统一管理。
添加灵骏节点不替换节点原有的操作系统、系统盘和数据盘,存储数据仍然保留。
适用范围
待添加的节点实例须已在本节点池关联的灵骏分组中,且未加入其他节点池。
灵骏节点的(OperatingState)状态为使用中(Using)状态。
操作步骤
在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。
在节点池页面,单击⋮ > 添加已有节点,按照页面提示完成以下配置:
添加已有灵骏节点实例:在实例列表选择待添加的实例。勾选显示不可用的实例可查看当前不可用的实例。
数据盘挂载:选择数据盘的挂载方式。
仅在已开通自定义数据盘配置白名单时开放
按节点池配置:使用节点池预设的数据盘配置初始化并挂载数据盘。
若节点池未预设数据盘配置,则保留节点原有配置。
不初始化:不对数据盘进行初始化操作,保留节点原有数据盘配置。
重要若各节点的存储配置不同,节点池升级期间,系统将按各节点的实际存储配置分别初始化数据盘,而非使用统一配置。
使用按节点池配置时,挂载目录须为空。非空目录挂载后,原有文件将无法访问。
添加完成后,ACK会自动在灵骏节点实例上添加以下标签,可在智能计算灵骏控制台查看:
ack.aliyun.com:纳管该节点的ACK托管集群Pro版ID。ack.alibabacloud.com/nodepool-id:纳管该节点的灵骏节点池ID。
移除灵骏节点
当不再需要某节点继续工作时,可将该节点从节点池中移除。移除操作可能影响业务,建议在业务低峰期进行。
注意事项
排空节点:
节点上存在 Pod 时,请勾选自动排空节点(drain),并确保集群资源充足,Pod 将自动迁移到其他节点。
若应用配置了PDB,可能导致排空失败,进而导致移除失败。建议提前手动处理。
排空后,若应用在其他节点上无法正常启动,移除任务将忽略此情况并继续执行。
移除异常状态的节点时,请勿勾选自动排空节点(drain),否则可能导致移除失败。
移除后的节点状态:
移除灵骏节点仅将节点从灵骏节点池移出,不会将节点从灵骏分组中移出,也不会自动释放或退订节点。
添加到节点池的灵骏节点实例不会随 ACK 集群或灵骏节点池的删除而释放,也不会从灵骏分组中自动缩容。请关注灵骏节点的计费状态,避免产生额外费用。
如需进行更多节点与分组的管理操作,请前往智能计算灵骏控制台操作。
移除为异步操作,请在节点列表中查看移除进度。
操作步骤
在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。
单击目标灵骏节点池名称,在节点管理页面移除节点。
单个节点移除:定位目标节点,在该节点右侧操作列,选择。
批量节点移除:选中目标节点,单击页面下方的批量移除。
选择是否需要自动排空节点(drain),仔细阅读页面注意事项后按照页面提示完成操作。
升级 kubelet 版本
灵骏节点池支持升级 kubelet 及容器运行时的版本。升级前请提前执行前置检查,暴露可能影响升级的风险。在发起升级后系统会自动执行前置检查,对检查不通过的节点跳过升级。
kubelet升级:将节点池内节点的kubelet升级到与控制面相同的版本。
容器运行时升级:升级节点的容器运行时至最新版本。
仅支持包含节点的灵骏节点池执行升级操作。
在ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择。
在目标灵骏节点池的操作列,选择
> Kubelet 升级,按照页面提示完成以下配置:基础信息
配置项
说明
kubelet 和运行时升级信息
展示 kubelet和容器运行时当前版本和可升级版本。
升级节点
指定待升级节点(所有节点或部分节点)。
升级方式
原地升级时,将直接在原节点上更新替换所需的组件,不会替换系统盘,也不会重新初始化节点,原节点的数据不受影响。
忽略警告级别检查项
前置检查结果中存在节点池级别的警告项(如节点池中存在 Pod 使用了指向系统盘的 HostPath)时,是否忽略该项继续升级。
批量升级策略
配置项
说明
每批次执行最多节点数
升级过程会根据设置的最大并行数依次对节点进行升级。
自动暂停策略
在节点升级过程中的暂停策略。
每批次间隔时间
自动暂停策略为不暂停时,可选择每个升级批次之间是否需要时间间隔或间隔的时长。可选范围为5~120分钟。
单击前置检查。若检查未通过,请参见页面提供的解决方案排查问题,通过后再继续。
单击开始升级,按照页面提示完成升级。
升级时,您可以根据页面提示进行如下操作。
暂停:集群暂停状态为节点池升级的中间状态,建议您不要在此期间对集群进行操作,并尽快完成升级过程。处于中间状态的集群会在7日之后关闭升级过程,并清理一切升级相关的事件和日志信息。
暂停后,已完成升级的节点的kubelet和容器运行时不支持版本回退。
取消:取消升级。单击取消后,已完成升级的节点的kubelet和容器运行时不支持版本回退。
灵骏节点常见运维场景
以下介绍灵骏节点在各运维场景中,对应的ACK侧操作流程。
场景 | 说明 |
灵骏节点更换分组 | |
灵骏节点重启 |
|
灵骏节点重装 | |
灵骏下线维修(备机替换) |
更多操作
使用RDMA功能
为启用Pod在灵骏节点的RDMA网络通信,请先在组件管理页面手动安装ack-rdma-device-plugin组件。具体使用方式请参见Pod在灵骏节点使用RDMA网络。
FAQ
为什么维修后节点仍是未就绪(Not Ready)状态?
现象:灵骏节点由于硬件问题进行了下线维修,但维修完成后,ACK集群中节点状态仍然是未就绪(Not Ready)状态。
原因:灵骏节点下线维修期间将进行换机操作,不保留本地盘数据,可能会导致kubelet、containerd等容器运行时信息被清除,节点状态异常。
解决方案:维修完成后,需手动将其从节点池移除,并通过添加已有节点重新加入灵骏节点池。