为了便于对节点进行分组管理和操作,ACK提供节点池功能。节点池是一个或一组节点的逻辑集合,允许您对节点进行统一管理和运维,例如节点升级、自动弹性伸缩等。通过创建多个节点池,您可以进一步实现资源的隔离,例如为不同类型的工作负载部署独立的节点池,分组管理不同属性的节点等。
节点池概念
为了帮助您高效管理集群中的节点,ACK引入节点池的概念。节点池是集群中一个或一组节点的逻辑集合,一个集群中可以创建多个不同配置和类型的节点池。节点池的配置包含节点的属性,例如节点规格、可用区、标签、污点等。这些属性可以在创建节点池时指定,也可以在创建完成后进行编辑修改。关于创建节点池,请参见创建节点池。关于编辑节点池,请参见编辑节点池。
通过节点池,您可以在同一个集群中实现不同类型的节点混合部署管理。
同一个集群中,允许创建不同操作系统镜像(ContainerOS、Alibaba Cloud Linux、Windows等)的节点池。
同一个集群中,允许创建不同容器运行时(containerd、Docker、安全沙箱)的节点池。
同一个集群中,允许创建不同计费类型(按量付费、包年包月、抢占式实例)的节点池。
同一个集群中,允许创建多个开启自动弹性伸缩的节点池。
节点池与托管节点池介绍
节点池类型
ACK节点池类型分为(非托管)节点池和托管节点池。
节点池类型 | 描述 |
节点池 | 节点池是集群中具有相同配置的一组节点,节点池可以包含一个或多个节点。节点池与弹性伸缩组实例一比一对应。当对节点池进行扩容和缩容时,ACK通过弹性伸缩服务下发扩容和移除节点的操作。您可以根据自己的需要创建和管理多个节点池。 说明 由于默认节点池中安装了部分系统组件,弹性伸缩时可能会造成集群功能的不稳定。如果您需要实现弹性伸缩功能,建议您另建节点池。 |
托管节点池 | 托管节点池是ACK全新推出的自动化运维型节点池,可以自动完成部分节点运维操作,如CVE更新、部分故障修复等,从而减轻您的节点运维负担。 更多信息,请参见托管节点池概述。 |
功能对比
对比项 | 普通节点池 | 托管节点池 |
运维能力 | 由您自行管理。 | 部分运维托管于ACK集群。 |
运维窗口 | 无需设置运维窗口 。 | 需要设置运维窗口。托管节点池会在您设定的运维窗口内执行自动化的运维操作,如CVE修复。 |
故障修复 | 手动。 | 自动。 说明 托管节点池的自动化运维能力可以帮助您简化节点运维工作,部分复杂的节点故障可能仍需要人工修复。关于节点自动恢复的更多信息,请参见托管节点池节点自动恢复。 |
CVE修复 | 由您手动触发CVE修复。 | 自动触发CVE修复。 说明 CVE修复是云安全中心提供的高级功能。若需使用该功能,您需要先购买云安全中心的企业版或以上版本,ACK不额外收取费用。更多信息,请参见漏洞修复。 |
节点组件升级 | 手动。 | 自动。 |
kubelet小版本升级 | 手动。 | 自动。 |
ContainerOS极速扩容 | 不支持。 | 支持。 千节点扩容P90节点就绪仅需53s,相较于CentOS千节点扩容P90节点的330s有较大优势。 说明 ContainerOS是为容器场景垂直优化的阿里云官方操作系统,完全兼容现有的Kubernetes生态。更多信息,请参见ContainerOS概述。 |
操作系统 | 支持ContainerOS、Alibaba Cloud Linux、Red Hat、Ubuntu、Windows等操作系统。 | 支持ContainerOS、Alibaba Cloud Linux、Red Hat、Ubuntu等操作系统。 |
关于ACK集群支持的操作系统镜像介绍及镜像的使用限制,请参见操作系统镜像概述。 |
在删除节点池前,您需清空节点池内所有节点。
只能在创建节点池的时候开启自动弹性伸缩功能。开启了自动弹性伸缩功能的节点池有以下特性:
不支持手动扩容。
付费类型支持抢占式实例。
弹性模式上除了普通CPU实例,还支持GPU实例和GPU共享实例。
允许您关闭弹性伸缩配置,将弹性节点池切换为节点池 (反向操作不允许)。
更多信息,请参见启用节点自动伸缩。
节点池功能
节点池目前支持以下功能。
功能 | 说明 |
创建节点池,需要指定节点池的配置。 | |
编辑节点池 | 修改节点池的配置。 重要 编辑节点池时,如无特殊说明(如同步更新存量节点标签及污点),不会修改节点池已有存量节点的配置,仅作用于新增节点。节点池的运维操作,例如节点池升级、节点池节点恢复、节点池CVE修复、节点池自定义Kubelet配置,会修改存量节点的配置。 |
调整节点池内节点的数量。
| |
可添加不属于任何集群的已有节点到节点池内,对添加的节点具有一定限制。关于添加已有节点的限制,请参见使用限制。 | |
移除节点池内指定的一个或多个节点,移除后节点将不再属于集群和节点池。您可以在移除节点前选择是否排水以及是否释放实例。 | |
升级节点池内全部节点的系统镜像版本、运行时版本和Kubelet版本。为了减少对集群工作负载的影响,可以指定分批执行策略。升级后,新节点也将使用新的节点池配置。 说明 托管节点池可以在运维窗口自动完成节点池升级。 | |
节点池节点恢复 | 恢复节点池中的异常节点,使节点保持正常运行状态。采用逐个恢复的策略。 说明 托管节点池可以在节点异常时自动完成节点池节点恢复。 |
修复节点池中节点的CVE漏洞。为了减少对集群工作负载的影响,可以指定分批执行策略。 说明 托管节点池可以在运维窗口自动完成节点池CVE修复。 | |
修改节点池中节点的Kubelet配置,新Kubelet配置也将应用于节点池新增的节点。 | |
弹性伸缩可以根据业务负载和策略,按需弹出普通实例、GPU实例、竞价付费实例,支持多可用区、多实例规格、多种伸缩模式,满足不同的节点伸缩场景,进行成本优化。 |
节点池计费
节点池本身不收费,但节点池使用的ECS实例等云资源由对应的云产品计费。
关于云服务器计费详情,请参见云服务器ECS产品计费。
关于弹性伸缩组的计费详情,请参见弹性伸缩产品计费。
节点池相关术语
术语 | 描述 |
伸缩组 | 节点池底层使用伸缩组管理节点,一个伸缩组包含ECS实例集合,这些实例被视为逻辑组以用于自动扩展和管理用途。节点池基于弹性伸缩组来进行节点管理,节点池中的资源(包括ECS实例和弹性伸缩组)在您的阿里云账户中运行。更多信息,请参见伸缩组概述。 重要 请勿直接通过弹性伸缩组进行配置及节点操作,请通过容器服务节点池进行节点配置及管理,否则将导致节点池部分功能不正常运作。 |
伸缩配置 | 节点池底层使用伸缩配置管理节点配置,ESS伸缩配置为弹性伸缩时ECS实例使用的模板。当弹性伸缩触发弹性扩张活动后,弹性伸缩以该伸缩配置为模板自动创建ECS实例。 重要 请勿直接通过ESS控制台、OpenAPI直接修改伸缩配置,请通过容器服务节点池进行节点配置及管理,否则将导致节点池部分功能异常。 |
伸缩活动 | 节点池的每次扩缩容、添加节点、移除节点都会触发伸缩活动。触发伸缩活动后,所有扩张和收缩动作都交由系统自动完成,并留下相关记录,您可以通过节点池的伸缩活动查看节点池的历史伸缩活动记录。 |
替换系统盘 | 节点池的某些操作,例如自动添加已有节点、镜像升级等,会通过替换节点系统盘的方式初始化节点。该节点的IaaS属性不发生改变,如节点名称、实例ID、IP等,但会删除节点系统盘上的数据,执行节点的初始化流程。额外挂载到该节点上的数据盘不受影响。 重要 请勿在节点系统盘中存储持久化数据,建议保存在数据盘中。 |
原地升级 | 与替换系统盘相对应的一种升级方式,是直接在原节点上更新替换所需组件。原地升级不会替换系统盘,也不会重新初始化节点,因此不会破坏原节点的数据。 |
相关文档
关于创建节点池的相关配置项说明,请参见创建节点池。
您可以通过节点池扩缩容,扩缩容一个或多个具有相同配置的ECS节点,请参见扩缩容节点池。
您可以通过添加已有节点的方式,将您已有的节点纳管到节点池中,请参见添加已有节点。
如需将集群中的节点移出集群,请参见移除节点了解具体操作及注意事项。
节点池的运维操作,例如升级节点池、节点自动恢复、修复节点池OS CVE漏洞等,请参见节点池运维。
节点池相关的最佳实践,例如基于部署集将节点分散部署在不同的物理服务器上以实现高可用、基于抢占式实例创建节点池等,请参见节点与节点池最佳实践。
1.24版本的集群将不再支持使用Docker作为内置容器运行时,请迁移为containerd,请参见将节点容器运行时从Docker迁移到containerd。
如果在使用节点或节点池的过程中遇到问题,可先参见节点与节点池FAQ进行自排查。
如需指定应用Pod使用的节点池,请参见调度应用至指定节点池。