ACK Auto Mode 集群依赖多种系统组件保障集群正常运行,将系统组件与业务工作负载混合部署可能导致资源争抢和相互影响。系统节点池是 ACK Auto Mode 集群中的专用智能托管节点池,通过标签、污点和调度策略将系统组件隔离运行在独立节点上,提升集群的可靠性和安全性。系统节点池在新建 ACK Auto Mode 集群中默认启用,默认名称为ack-system,由 ACK 全托管运维。
工作原理
系统节点池的默认名称为ack-system,通过以下标签、污点和调度策略的组合机制,实现系统组件与业务工作负载的严格隔离。
机制 | 配置 | 作用 |
专用标签(Label) |
| 标识节点属于系统节点池,供调度策略匹配使用。 |
污点(Taint) |
| 阻止未配置容忍的业务 Pod 调度到系统节点池。 |
节点亲和性(Node Affinity) |
| 强制系统组件 Pod 调度到带有系统节点池标签的节点。 |
容忍(Toleration) |
| 确保系统组件 Pod 可正常调度到系统节点池。 |
上述机制组合实现以下调度效果:
系统组件调度到系统节点池:通过 Node Affinity 强制调度,同时配置 Toleration 允许通过污点检查。
业务 Pod 调度到普通节点池:因业务 Pod 未配置对
CriticalAddonsOnly污点的容忍,无法调度到系统节点池。
主要特性与优势
严格隔离:系统组件仅调度到系统节点池,与业务节点池严格隔离,避免资源争抢,提升集群整体的稳定性和性能。
ACK 托管运维:ACK 负责系统节点池的创建、升级和弹性伸缩,无需人工干预。
ACK仅提供系统节点池能力,不承担系统节点池对应的资源费用。
常见问题
哪些组件会运行在系统节点池中?
ACK系统组件默认调度到系统节点池运行,包括但不限于:
CoreDNScsi-plugincsi-provisionermetrics-serverack-cost-exporterloongcollector
能否删除系统节点池?
如无特殊原因,请勿删除系统节点池。删除后,系统组件Pod将被驱逐,且由于普通节点池缺少系统节点池标签,无法满足节点亲和性要求,系统组件将无法被重新调度,可能导致集群功能异常。
如确需删除,请先创建一个满足以下调度要求的替代节点池:
labels:
alibabacloud.com/system-nodepool: "true"
taints:
- key: CriticalAddonsOnly
value: "true"
effect: NoSchedule存量系统组件调度策略
系统组件升级版本时自动调度到系统节点池。
DaemonSet 类组件和控制面托管组件不受影响,仍按原有策略部署。
可以通过手动更改组件的通用配置,将系统组件调度到系统节点池:
机制 | 配置 | 作用 |
节点亲和性 | 必须满足/尽量满足:必须满足 Key: 操作符: Value: | 匹配系统节点池标签 |
调度容忍 | Key: 操作符: Value: 效果: | 允许Pod调度到系统节点池 |
通过控制台或 OpenAPI 新安装系统组件时,将默认调度到系统节点池。
如用户手动指定了 NodeAffinity 或 Toleration,系统组件的调度以用户配置为准。
业务 Pod 能否调度到系统节点池?
默认不可以。如确有需要,可为业务 Pod 添加对 CriticalAddonsOnly 污点的容忍(Toleration),但不推荐此做法,因为这会破坏隔离性,可能影响系统组件的稳定运行。
如何确认系统节点池已启用?
您可以在控制台的节点池列表中查看是否存在 ack-system 节点池。