为帮助您更好地管理Kubernetes集群内的节点,云容器引擎CCE引入节点池概念。节点池是集群中具有相同配置的一组节点,一个节点池包含一个节点或多个节点。
您可以在CCE控制台中创建新的自定义节点池,借助节点池基本功能方便快捷地创建、管理和销毁节点,而不会影响整个集群。新节点池中所有节点的参数和类型都彼此相同,您无法在节点池中配置单个节点,任何配置更改都会影响节点池中的所有节点。
在云容器引擎中,创建集群时配置的节点参数和类型将成为默认节点池“DefaultPool”,该节点池不可编辑、删除或迁移,也不支持扩容、弹性伸缩。
通过节点池功能您还可以实现节点的动态扩缩容:
- 当集群中出现因资源不足而无法调度的实例(Pod)时,自动触发扩容,为您减少人力成本。
- 当满足节点空闲等缩容条件时,自动触发缩容,为您节约资源成本。
本章节介绍节点池在云容器引擎(CCE)中的工作原理,以及如何创建和管理节点池。
通常情况下,节点池内的节点均具有如下相同属性:
- 节点操作系统。
- 节点Kubernetes组件启动参数。
- 节点自定义启动脚本。
- 节点“K8S标签”及“Taints”设置。
此外,CCE将同时围绕节点池扩展以下属性:
- 节点池级别操作系统。
- 节点池级别每节点的Pod数上限。
当业务需要使用大规模集群时,推荐您使用节点池进行节点管理,以提高大规模集群易用性。
下表介绍了多种大规模集群管理场景,并分别展示节点池在每种场景下发挥的作用:
场景 | 作用 |
集群存在较多异构节点(机型配置不同) | 通过节点池可规范节点分组管理。 |
集群需要频繁扩缩容节点 | 通过节点池可降低操作成本。 |
集群内应用程序调度规则复杂 | 通过节点池标签可快速指定业务调度规则。 |
集群内节点日常维护 | 通过节点池可便捷操作Kubernetes版本升级、Docker版本升级。 |
功能点 | 功能说明 | 注意事项 |
创建节点池 | 新增节点池, 暂不支持包年包月类型。 | 单个集群不建议超过100个节点池。 |
删除节点池 | 删除节点池时会先删除节点池中的节点,原有节点上的工作负载实例会自动迁移至其他节点池的可用节点。 | 如果工作负载实例具有特定的节点选择器,且如果集群中的其他节点均不符合标准,则工作负载实例可能仍处于无法安排的状态。 |
节点池开启弹性伸缩 | 开启弹性伸缩后,节点池将根据集群负载情况自动创建或删除节点池内的节点。 | 节点池中的节点建议不要放置重要数据,以防止节点被弹性缩容,数据无法恢复。 |
节点池关闭弹性伸缩 | 关闭弹性伸缩后,节点池内节点数量不随集群负载情况自动调整。 | / |
调整节点池大小 | 支持直接调整节点池内节点个数。若减小节点数量,将从现有节点池内随机缩容节点。 | 开启弹性伸缩后,不建议手动调整节点池大小。 |
调整节点池配置 | 可修改节点池名称、节点个数、K8S标签、Taints及资源标签。 | 修改K8S标签和Taints会对节点池内节点全部生效,可能会引起Pod重新调度,请谨慎变更。 |
添加已有节点 | 可添加不属于集群的节点到节点池。要求如下: 待添加节点需与CCE集群在同一虚拟私有云和子网内。 实例未被其他集群使用且实例与节点池配置相同(机型、计费模式等)。 | 无特殊情况时,不建议添加已有节点,推荐直接新建节点池。 |
移出节点池内节点 | 可以将同一个集群下某个节点池中的节点迁移到默认节点池(defaultpool)中 | 暂不支持将默认节点池(defaultpool)中的节点迁移到其他节点池中,也不支持将自定义节点池中的节点迁移到其他自定义节点池。 |
拷贝节点池 | 可以方便的拷贝现有节点池的配置,从而创建新的节点池。 | |
配置kubernetes参数 | 通过该功能您可以对核心组件进行深度配置。 |
|
在定义工作负载时,您可以间接的控制将其部署在哪个节点池上。
例如,您可以通过CCE控制台中工作负载页面的“调度策略”设置工作负载与节点的亲和性,强制将该工作负载部署到特定节点池上,从而实现该工作负载仅在该节点池中的节点上运行的目的。如果您需要更好地控制工作负载实例的调度位置,您可以使用调度策略概述章节中关于工作负载与节点的亲和或反亲和策略相关说明。
您也可以为容器指定资源请求,工作负载将仅在满足资源请求的节点上运行。
例如,如果工作负载定义了需要包含四个CPU的容器,则工作负载将不会选择在具有两个CPU的节点上运行。