全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:节点池概述

更新时间:Feb 14, 2025

节点池是具有相同属性的一组节点的逻辑集合,允许对节点进行统一的管理和运维,例如节点升级、弹性伸缩等。您可以进一步使用节点池的自动化运维能力,使用OS CVE漏洞自动修复、故障节点自动恢复、kubelet和containerd版本自动升级等功能,降低运维成本。

节点池介绍

简单来说,您可以将节点池理解为一个配置模板,后续节点池中扩容出的节点都将使用它的配置。一个集群中可以创建多个不同配置和类型的节点池。节点池的配置包含节点的属性,例如节点实例规格、计费类型、可用区(vSwitch)、操作系统镜像、CPU架构、标签和污点等。这些属性可以在创建节点池时指定,也可以在创建完成后进行编辑修改。关于如何创建节点池,请参见创建和管理节点池

ACK节点池功能推出前创建的老集群中,可能存在未被节点池管理的游离Worker节点。如仍需要保留这些节点,推荐您将其纳入节点池进行管理。具体操作,请参见迁移游离节点至节点池

您可以使用单节点池,减少管理和配置的复杂性,也可以使用多节点池,实现更精细的资源隔离和不同类型节点的混合部署管理。

单节点池

多节点池

通过一个节点池管理多个团队或多种工作负载的计算资源,简化操作和维护工作。单节点池可支持以下功能。

  • 同时管理多个团队的计算资源。

  • 配置多种实例类型,例如普通ECS实例、GPU实例、弹性裸金属实例、高性能计算优化型实例等,以满足不同工作负载的需求。

  • 在多个可用区中分布节点,提高高可用性。

目前不支持混合不同操作系统类型和CPU架构(Arm和x86)的实例。

创建多个节点池,为不同工作负载或团队提供独立的计算资源,从而避免资源争用和潜在的安全风险。适用于以下场景。

  • 租户隔离,为不同团队提供独立的计算资源,也便于计费管理。

  • 不同硬件规格(例如CPU架构、GPU、FPGA等)机器的隔离,确保硬件资源的合理分配。

  • 增强敏感应用的安全隔离。

  • 部署不同的操作系统。

使用多节点池,您可以通过调度策略定义不同节点池的优先级顺序,以优化资源和成本管理。例如以下场景。

  • 控制不同成本的计算资源供给(例如抢占式实例、包年包月实例等)的优先级顺序,以降低成本。

  • 根据工作负载需求,按比例分配不同类型的实例,例如x86架构和Arm架构的使用比例。

节点池功能

ACK在节点池维度提供了多种能力,便于节点的管理。如果您不希望花费过多精力运维Worker节点,更关注于上层应用开发,您还可以开启节点池的托管能力,使用多种自动化运维能力。

基础功能

功能项

说明

相关文档

创建、编辑、删除与查看

  • 支持通过控制台创建节点池,配置节点池的基础信息、网络配置、实例规格配置、存储配置、期望节点数等。

  • 支持调整已有节点池的部分配置。支持编辑的配置项及操作注意事项,请参见文档了解。

  • 节点无需使用时,可删除节点池。节点池是否开启期望节点数以及节点的计费模式会影响节点释放的行为。

  • 支持查看节点池详情,包括基本配置信息、资源监控大盘、节点列表、伸缩活动等。

创建和管理节点池

手动或自动扩缩容

  • 支持通过手动调整节点池的期望节点数,实现节点池的扩缩容,将节点数目维持在期望数量,节省资源成本。

    一些非标准的移除、修改、释放等操作可能导致节点池未按照预期扩容,请参见文档了解。

  • 支持配置节点自动伸缩方案,当集群的容量规划无法满足应用Pod调度时,自动扩缩节点资源。

添加已有节点

如购买ECS实例后需将其添加到ACK集群中作为Worker节点,或移除Worker节点后需重新加入节点池,可以使用添加已有节点的功能。此功能存在一些使用限制和注意事项,请参见文档了解。

添加已有节点

移除节点

如果不再需要某些节点,可将节点从集群或节点池中移除。请按标准化操作移除,避免出现预期外行为。

移除节点

升级kubelet版本

可开启自动化运维能力

升级节点池中节点的kubelet版本和containerd版本。

升级节点池

更换操作系统

支持操作系统版本的升级和操作系统类型的更换(例如将EOL的操作系统切换为ContainerOS或Alibaba Cloud Linux)。

更换操作系统

CVE漏洞修复

可开启自动化运维能力

手动执行CVE漏洞的扫描并修复节点操作系统存在的安全漏洞。部分CVE漏洞的修复需要通过重启节点来实现,请参见文档了解功能说明及注意事项。

操作系统CVE漏洞手动修复

自定义节点池kubelet参数

登录控制台,在节点池维度自定义节点的kubelet参数配置,调整节点行为,例如整集群资源预留以调配资源用量等。强烈不建议您通过黑屏操作自行定义控制台不支持的kubelet参数。

自定义节点池kubelet配置

自定义节点池OS参数

登录控制台,在节点池维度自定义节点的OS参数配置,以调优系统性能。强烈不建议您通过黑屏操作自行定义控制台不支持的OS参数。

自定义节点池OS参数

自动化运维能力

启用节点池的自动化运维能力能够降低Worker节点的运维负担,让ACK为您自动化完成某些运维操作,例如操作系统(OS)CVE漏洞自动修复、kubelet自动升级、节点故障自愈等。但如果您的业务对底层节点的变更比较敏感,无法容忍节点的重启以及业务Pod的迁移,不推荐您启用。

准备工作

  • 确保您的操作系统为Alibaba Cloud Linux 3容器优化版ContainerOS、Alibaba Cloud Linux、Red Hat、Ubuntu。

    关于ACK集群支持的操作系统镜像介绍及镜像的使用限制,请参见操作系统

  • 使用节点池的自动化运维能力前,您需在容器服务管理控制台节点池页面完成以下操作(配置完成后均支持修改)。

    关于如何创建和编辑节点池,请参见创建和管理节点池

    展开查看准备工作

    • 为节点池开启托管能力

      • 新建节点池:创建节点池的过程中勾选托管节点池

      • 存量节点池:在节点池列表的操作列,单击节点池对应的更多 > 开启托管

    • 按需启用节点池的自动化运维能力

      包括执行节点自动恢复、自动升级kubelet和运行时版本、自动修复OS CV漏洞等。

    • 配置集群维护窗口

      节点池的自动化运维能力需配置集群维护窗口使用,节点池需要在集群维护窗口内执行自动化运维任务。

      • 新建节点池:创建节点池的过程中配置托管节点池集群维护窗口

      • 存量节点池:在节点池列表的操作列,单击存量托管节点池对应的更多 > 托管配置,配置维护窗口。

    配置示例如下图所示。

    image

功能介绍

功能项

说明

kubelet和运行时版本自动升级

保持kubelet版本和containerd运行时的自动升级。

  • kubelet升级:将节点池内节点的kubelet升级到与控制面相同的版本。默认采取原地升级。

  • 容器运行时升级:容器运行时发布新版本后,升级节点的容器运行时至最新版本。

    当containerd有重大操作系统CVE漏洞时,ACK默认自动完成升级和修复。

相关功能介绍和注意事项,请参见升级节点池

OS CVE漏洞自动修复

ACK将扫描节点上存在的安全漏洞,根据集群运维窗口排期并执行CVE漏洞修复计划,以提升集群稳定性、安全性、合规性。相关注意事项,请参见修复节点池操作系统CVE漏洞

ECS系统事件自动响应

支持ECS系统事件的自动响应。目前支持的系统事件类型如下。

  • 因系统维护实例重启(SystemMaintenance.Reboot)

    自动响应流程

    1. ACK接收到事件后,同步发送短信或站内信通知。请及时关注。

    2. 针对受影响的ECS实例执行节点排水,将节点上Pod迁移到其他可用的节点,并重启ECS实例。

      • 如果节点池在ECS设定的计划执行时间前有可用的维护窗口,ACK会在维护窗口内执行自动响应流程。否则,ACK会在ECS计划执行时间的前一个小时执行该流程。

      • 排水操作会驱逐节点上的Pod。服务应用后端应采用多副本部署在多个节点上,同时建议为重要应用配置PDB,以避免节点上Pod被驱逐后影响服务的整体可用性。

      • 若排水失败,ACK不会尝试强制重启实例。

节点自愈

ACK会自动监控节点的运行状态condition等信息,当节点发生异常时自动执行恢复操作,保证节点的正常运行(部分复杂的节点故障可能仍然需要手动修复)。关于节点自愈的触发条件、生成事件、执行流程等信息,请参见开启节点自愈

节点池生命周期

ACK集群节点池的生命周期涉及多个阶段和状态,从节点池的创建部署、运行维护(扩容缩容、更新升级、节点移除等),到最终的删除。不同状态下的含义和集群的状态流转图如下。

image

节点池状态

说明

初始化中(initial)

正在创建节点池。

已激活(active)

成功创建节点池,运行中。

失败(failed)

节点池创建失败。

扩容中(scaling)

节点池扩容中或正在添加节点。

更新中(updating)

节点池配置更新中。

移除节点中(removing_nodes)

正在移除节点池中的节点。

升级中(upgrading)

节点池升级中。

修复中(repairing)

节点池中修复,例如修复节点池节点、节点池CVE漏洞等。

删除中(deleting)

正在删除节点池。

已删除(deleted,该状态您不可见)

成功删除节点池。

节点池计费

使用节点池和节点池提供的自动化运维能力不收费,但节点池内ECS实例等云资源由对应的云产品收取费用。

  • 关于ECS实例的计费说明,请参见计费概述

    如果您期望修改节点池中已有节点的付费类型,请参见按量付费转包年包月。修改节点池的付费类型仅对扩容的新节点生效,不会改变节点池内已有节点的付费类型。

  • 关于弹性伸缩组的计费详情,请参见弹性伸缩产品计费

相关术语

首次使用节点池前,建议您了解节点池相关的概念术语。

  • 伸缩组:当对节点池进行扩容和缩容时,ACK通过弹性伸缩ESS服务下发扩容和移除节点的操作。节点池与弹性伸缩组实例为一一对应的关系。一个伸缩组是一个或多个ECS实例(Worker节点)的合集。

  • 伸缩配置:节点池底层使用伸缩配置管理节点配置。ESS伸缩配置是弹性伸缩时ECS实例使用的模板。当弹性伸缩触发弹性扩张活动后,弹性伸缩以该伸缩配置为模板自动创建ECS实例。

  • 伸缩活动:节点池的每次扩缩容、添加节点、移除节点都会触发伸缩活动。触发伸缩活动后,所有扩容和缩容动作都交由系统自动完成,并留下相关记录。您可以通过节点池的伸缩活动查看节点池的历史伸缩活动记录。

  • 替换系统盘:节点池的某些操作,例如自动添加已有节点、更换容器运行时等,会通过替换节点系统盘(替盘升级)的方式初始化节点。该节点的实例属性不发生改变,例如节点名称、实例ID、IP等,但节点系统盘上的数据将被删除。额外挂载到该节点上的数据盘不受影响。

    ACK执行替盘时会进行节点排水操作,遵循Pod Disruption Budget(PDB)的前提下将节点上的Pod驱逐至其他可用节点。为确保服务高可用性,建议您采用多副本部署策略,将工作负载分散在多个节点上,同时为关键业务配置PDB,控制同时中断的Pod数量。

  • 原地升级:与替盘升级对应的一种升级方式,直接在原节点上更新替换所需的组件。原地升级不会替换系统盘,也不会重新初始化节点,原节点的数据不受影响。

相关文档