更新时间:2024-09-29 GMT+08:00

节点池概述

简介

为帮助您更好地管理Kubernetes集群内的节点,云容器引擎CCE引入节点池概念。节点池是集群中具有相同配置的一组节点,一个节点池包含一个节点或多个节点。

您可以在CCE控制台创建新的自定义节点池,借助节点池基本功能方便快捷地创建、管理和销毁节点,而不会影响整个集群。新节点池中所有节点的参数和类型都彼此相同,您无法在节点池中配置单个节点,任何配置更改都会影响节点池中的所有节点。

通过节点池功能您还可以实现节点的动态扩缩容(仅按需计费的节点池支持):

  • 当集群中出现因资源不足而无法调度的实例(Pod)时,自动触发扩容,为您减少人力成本。
  • 当满足节点空闲等缩容条件时,自动触发缩容,为您节约资源成本。

本章节介绍节点池在云容器引擎(CCE)中的工作原理,以及如何创建和管理节点池。

节点池架构

图1 节点池整体架构图

通常情况下,节点池内的节点均具有如下相同属性:

  • 节点操作系统。
  • 节点登录方式。
  • 节点容器运行时。
  • 节点所属企业项目。
  • 节点Kubernetes组件启动参数。
  • 节点自定义启动脚本。
  • 节点“K8s标签”“污点”设置。

此外,CCE将同时围绕节点池扩展以下属性:

  • 节点池级别操作系统。
  • 节点池级别每节点的Pod数上限。

节点池升级说明

对于v1.21.11-r0、v1.23.9-r0、v1.25.4-r0及以上版本的集群,新建的节点池不再区分计费模式,默认支持创建按需和包周期的节点,为您提供更优秀的资源管理体验。

新节点池的优势如下:

  • 同一个节点池中支持创建按需节点和包周期节点,并且支持选择不同的包年包月周期。
  • 支持纳管按需/包周期节点。
  • 支持开启弹性伸缩,配置丰富的伸缩策略,为资源管理带来更高效、更灵活的体验。

对于已存在的节点池,升级为新节点池后将存在以下行为变更:

原节点池类型

新节点池变化

按需节点池

新节点池将自动继承按需节点池的全量能力。

此外,新节点池中创建的包周期节点不支持手动缩容,仅支持退订和移除。

包周期节点池

您可以将原有的包周期节点池无损切换到新节点池,并且不会对节点池下已有的节点产生任何影响。

此外,包周期节点池切换到新节点池后,行为变化如下:

  • 默认创建的节点不再是包周期节点,而是按需节点。
  • 节点池中的包周期节点不再支持手动缩容,仅支持退订和移除。
  • 将支持开启弹性伸缩功能,且弹性伸缩默认扩缩容的节点为按需节点,不会扩缩容包周期节点。
  • 不再支持使用更新节点池接口创建包周期节点,如果您需要新建包周期节点,请使用扩缩容节点池接口。

默认节点池DefaultPool说明

DefaultPool并非一个真正的节点池,只是将非自定义节点池中的节点做一个归类,所有非自定义节点池中创建的节点(直接在控制台创建的节点或调用API创建的节点)都会归类在DefaultPool中。DefaultPool不具备任何自定义节点池的功能,包括弹性伸缩、各项参数设置等,且不可编辑、删除或迁移,也不支持扩容、弹性伸缩。

应用场景

当业务需要使用大规模集群时,推荐您使用节点池进行节点管理,以提高大规模集群易用性。

下表介绍了多种大规模集群管理场景,并分别展示节点池在每种场景下发挥的作用:

表1 节点池场景及作用

场景

作用

集群存在较多异构节点(机型配置不同)

通过节点池可规范节点分组管理。

集群需要频繁扩缩容节点

通过节点池可降低操作成本。

集群内应用程序调度规则复杂

通过节点池标签可快速指定业务调度规则。

功能点及注意事项

功能点

功能说明

注意事项

创建节点池

新增节点池。

单个集群不建议超过100个节点池。

删除节点池

删除节点池时会先删除节点池中的节点,原有节点上的工作负载实例会自动迁移至其他节点池的可用节点。

如果工作负载实例具有特定的节点选择器,且如果集群中的其他节点均不符合标准,则工作负载实例可能仍处于无法安排的状态。

节点池开启弹性伸缩

开启弹性伸缩后,节点池将根据集群负载情况自动创建或删除节点池内的节点。

节点池中的节点建议不要放置重要数据,以防止节点被弹性缩容,数据无法恢复。

节点池关闭弹性伸缩

关闭弹性伸缩后,节点池内节点数量不随集群负载情况自动调整。

/

调整节点池大小

支持直接调整节点池内节点个数。若减小节点数量,将从现有节点池内随机缩容节点。

开启弹性伸缩后,不建议手动调整节点池大小。

调整节点池配置

可修改节点池名称、节点个数,删除或新增K8s标签、污点及资源标签,调整节点池磁盘配置、操作系统、容器引擎等配置。

删除或新增K8s标签和污点会对节点池内节点全部生效,可能会引起Pod重新调度,请谨慎变更。

移出节点池内节点

可以将同一个集群下某个节点池中的节点迁移到默认节点池(DefaultPool)中

暂不支持将默认节点池(DefaultPool)中的节点迁移到其他节点池中,也不支持将自定义节点池中的节点迁移到其他自定义节点池。

复制节点池

可以方便的复制现有节点池的配置,从而创建新的节点池。

/

配置Kubernetes参数

通过该功能您可以对核心组件进行深度配置。

  • 本功能仅支持在v1.15及以上版本的集群中对节点池进行配置,v1.15以下版本不显示该功能。
  • 默认节点池DefaultPool不支持修改该类配置。

将工作负载部署到特定节点池

在定义工作负载时,您可以间接的控制将其部署在哪个节点池上。

例如,您可以通过CCE控制台工作负载页面的“调度策略”设置工作负载与节点的亲和性,强制将该工作负载部署到特定节点池上,从而实现该工作负载仅在该节点池中的节点上运行的目的。如果您需要更好地控制工作负载实例的调度位置,您可以使用设置节点亲和调度(nodeAffinity)章节中关于工作负载与节点的亲和或反亲和策略相关说明。

您也可以为容器指定资源请求,工作负载将仅在满足资源请求的节点上运行。

例如,如果工作负载定义了需要包含四个CPU的容器,则工作负载将不会选择在具有两个CPU的节点上运行。

相关操作

您可以登录CCE控制台并参考以下文档, 进行节点池对应的操作: