节点池是具有相同属性的一组节点的逻辑集合,允许对节点进行统一的管理和运维,例如节点升级、弹性伸缩等。您可以进一步使用节点池的自动化运维能力,使用OS CVE漏洞自动修复、故障节点自动恢复、kubelet和containerd版本自动升级等功能,降低运维成本。
节点池介绍
简单来说,您可以将节点池理解为一个配置模板,后续节点池中扩容出的节点都将使用它的配置。一个集群中可以创建多个不同配置和类型的节点池。节点池的配置包含节点的属性,例如节点实例规格、计费类型、可用区(vSwitch)、操作系统镜像、CPU架构、标签和污点等。这些属性可以在创建节点池时指定,也可以在创建完成后进行编辑修改。关于如何创建节点池,请参见创建和管理节点池。
ACK节点池功能推出前创建的老集群中,可能存在未被节点池管理的游离Worker节点。如仍需要保留这些节点,推荐您将其纳入节点池进行管理。具体操作,请参见迁移游离节点至节点池。
您可以使用单节点池,减少管理和配置的复杂性,也可以使用多节点池,实现更精细的资源隔离和不同类型节点的混合部署管理。
单节点池 | 多节点池 |
通过一个节点池管理多个团队或多种工作负载的计算资源,简化操作和维护工作。单节点池可支持以下功能。
目前不支持混合不同操作系统类型和CPU架构(Arm和x86)的实例。 | 创建多个节点池,为不同工作负载或团队提供独立的计算资源,从而避免资源争用和潜在的安全风险。适用于以下场景。
|
使用多节点池,您可以通过调度策略定义不同节点池的优先级顺序,以优化资源和成本管理。例如以下场景。
控制不同成本的计算资源供给(例如抢占式实例、包年包月实例等)的优先级顺序,以降低成本。
根据工作负载需求,按比例分配不同类型的实例,例如x86架构和Arm架构的使用比例。
节点池功能
ACK在节点池维度提供了多种能力,便于节点的管理。如果您不希望花费过多精力运维Worker节点,更关注于上层应用开发,您还可以开启节点池的托管能力,使用多种自动化运维能力。
基础功能
功能项 | 说明 | 相关文档 |
创建、编辑、删除与查看 |
| |
手动或自动扩缩容 |
| |
添加已有节点 | 如购买ECS实例后需将其添加到ACK集群中作为Worker节点,或移除Worker节点后需重新加入节点池,可以使用添加已有节点的功能。此功能存在一些使用限制和注意事项,请参见文档了解。 | |
移除节点 | 如果不再需要某些节点,可将节点从集群或节点池中移除。请按标准化操作移除,避免出现预期外行为。 | |
升级kubelet版本 | 可开启自动化运维能力 升级节点池中节点的kubelet版本和containerd版本。 | |
更换操作系统 | 支持操作系统版本的升级和操作系统类型的更换(例如将EOL的操作系统切换为ContainerOS或Alibaba Cloud Linux)。 | |
CVE漏洞修复 | 可开启自动化运维能力 手动执行CVE漏洞的扫描并修复节点操作系统存在的安全漏洞。部分CVE漏洞的修复需要通过重启节点来实现,请参见文档了解功能说明及注意事项。 | |
自定义节点池kubelet参数 | 登录控制台,在节点池维度自定义节点的kubelet参数配置,调整节点行为,例如整集群资源预留以调配资源用量等。强烈不建议您通过黑屏操作自行定义控制台不支持的kubelet参数。 | |
自定义节点池OS参数 | 登录控制台,在节点池维度自定义节点的OS参数配置,以调优系统性能。强烈不建议您通过黑屏操作自行定义控制台不支持的OS参数。 |
自动化运维能力
启用节点池的自动化运维能力能够降低Worker节点的运维负担,让ACK为您自动化完成某些运维操作,例如操作系统(OS)CVE漏洞自动修复、kubelet自动升级、节点故障自愈等。但如果您的业务对底层节点的变更比较敏感,无法容忍节点的重启以及业务Pod的迁移,不推荐您启用。
准备工作
确保您的操作系统为Alibaba Cloud Linux 3容器优化版、ContainerOS、Alibaba Cloud Linux、Red Hat、Ubuntu。
关于ACK集群支持的操作系统镜像介绍及镜像的使用限制,请参见操作系统。
使用节点池的自动化运维能力前,您需在容器服务管理控制台的节点池页面完成以下操作(配置完成后均支持修改)。
关于如何创建和编辑节点池,请参见创建和管理节点池。
功能介绍
功能项 | 说明 |
kubelet和运行时版本自动升级 | 保持kubelet版本和containerd运行时的自动升级。
相关功能介绍和注意事项,请参见升级节点池。 |
OS CVE漏洞自动修复 | ACK将扫描节点上存在的安全漏洞,根据集群运维窗口排期并执行CVE漏洞修复计划,以提升集群稳定性、安全性、合规性。相关注意事项,请参见修复节点池操作系统CVE漏洞。 |
ECS系统事件自动响应 | 支持ECS系统事件的自动响应。目前支持的系统事件类型如下。
|
节点自愈 | ACK会自动监控节点的运行状态 |
节点池生命周期
ACK集群节点池的生命周期涉及多个阶段和状态,从节点池的创建部署、运行维护(扩容缩容、更新升级、节点移除等),到最终的删除。不同状态下的含义和集群的状态流转图如下。
节点池状态 | 说明 |
初始化中(initial) | 正在创建节点池。 |
已激活(active) | 成功创建节点池,运行中。 |
失败(failed) | 节点池创建失败。 |
扩容中(scaling) | 节点池扩容中或正在添加节点。 |
更新中(updating) | 节点池配置更新中。 |
移除节点中(removing_nodes) | 正在移除节点池中的节点。 |
升级中(upgrading) | 节点池升级中。 |
修复中(repairing) | 节点池中修复,例如修复节点池节点、节点池CVE漏洞等。 |
删除中(deleting) | 正在删除节点池。 |
已删除(deleted,该状态您不可见) | 成功删除节点池。 |
节点池计费
相关术语
首次使用节点池前,建议您了解节点池相关的概念术语。
伸缩组:当对节点池进行扩容和缩容时,ACK通过弹性伸缩ESS服务下发扩容和移除节点的操作。节点池与弹性伸缩组实例为一一对应的关系。一个伸缩组是一个或多个ECS实例(Worker节点)的合集。
伸缩配置:节点池底层使用伸缩配置管理节点配置。ESS伸缩配置是弹性伸缩时ECS实例使用的模板。当弹性伸缩触发弹性扩张活动后,弹性伸缩以该伸缩配置为模板自动创建ECS实例。
伸缩活动:节点池的每次扩缩容、添加节点、移除节点都会触发伸缩活动。触发伸缩活动后,所有扩容和缩容动作都交由系统自动完成,并留下相关记录。您可以通过节点池的伸缩活动查看节点池的历史伸缩活动记录。
替换系统盘:节点池的某些操作,例如自动添加已有节点、更换容器运行时等,会通过替换节点系统盘(替盘升级)的方式初始化节点。该节点的实例属性不发生改变,例如节点名称、实例ID、IP等,但节点系统盘上的数据将被删除。额外挂载到该节点上的数据盘不受影响。
ACK执行替盘时会进行节点排水操作,遵循Pod Disruption Budget(PDB)的前提下将节点上的Pod驱逐至其他可用节点。为确保服务高可用性,建议您采用多副本部署策略,将工作负载分散在多个节点上,同时为关键业务配置PDB,控制同时中断的Pod数量。
原地升级:与替盘升级对应的一种升级方式,直接在原节点上更新替换所需的组件。原地升级不会替换系统盘,也不会重新初始化节点,原节点的数据不受影响。
相关文档
节点池相关的最佳实践,请参见节点与节点池最佳实践。
1.24版本的集群将不再支持使用Docker作为内置容器运行时,请迁移至containerd,请参见将节点容器运行时从Docker迁移到containerd。
随着集群负载的增加,您可以启用弹性伸缩方案,动态调整节点资源,请参见弹性伸缩。
如需指定应用Pod使用的节点池,请参见调度应用至指定节点池。
ACK集群基础版支持的节点上限为10,建议您热迁移至ACK集群Pro版以获得更大的资源配额,请参见热迁移ACK集群基础版至ACK集群Pro版。
如果在使用节点或节点池的过程中遇到问题,可参见节点与节点池FAQ进行自排查。
ACK提供集群成本管理解决方案,请参见成本套件。