为帮助您更好地管理Kubernetes集群内节点,容器服务ACK提供节点池的能力。通过节点池,您可以更方便地进行节点运维,配置节点自动弹性伸缩,批量管理,指定调度等。节点池功能为您提供更便捷的集群节点运维操作。

背景信息

节点池涉及的概念如下:
  • 弹性伸缩组:伸缩组是弹性伸缩的核心单元。在伸缩组中配置好实例配置信息来源并启用伸缩组后,您可以通过伸缩规则自动伸缩ECS实例,也可以手动添加已有的ECS实例。更多信息,请参见伸缩组概述
  • 替换系统盘:通过替换节点系统盘的方式初始化节点,该节点的IaaS属性不发生改变,如节点名称、实例ID、IP等,但会删除节点系统盘上的数据,执行节点的重新初始化流程。额外挂载到该节点上的数据盘不受影响。
    注意 请勿在节点系统盘中存储持久化数据,建议保存在数据盘中。
  • 原地升级:与替盘相对应的一种升级方式,直接在原节点上更新替换所需组件。原地升级不会替换系统盘,也不会重新初始化节点,因此不会破坏原节点的数据。

节点池概念

节点池是集群中全都具有相同配置的一组节点,节点池可以包含一个或多个节点。创建集群时指定的节点数和配置将成为默认节点池,然后您可以向集群添加其他不同大小和类型的自定义节点池。您可以创建和升级节点池而不会影响整个集群。

通常情况下,在节点池内的节点均具有以下相同属性:
  • 节点操作系统及版本。
  • 容器运行时类型及版本。
  • 计费类型(目前支持按量付费和包年包月,弹性节点池支持竞价实例)。
  • 节点规格。
  • 节点CPU Policy。
  • 节点标签、污点( Taints)。
  • 节点自定义数据。
nodepool

节点池使用说明

在您使用节点池功能前,请阅读以下使用说明:
  • 一个集群中可以创建多个节点池,目前有自定义节点池、弹性节点池、托管节点池。
  • 每个集群都有一个默认节点池,其定义和自定义节点池一致,复用创建集群时创建的弹性伸缩资源。通过未指定节点池的API的扩容和添加节点方式添加的实例,都将归属于默认节点池。关于通过API扩容集群和添加已有ECS节点的详细信息,请参见扩容集群添加已有实例到集群
  • 通过节点池,可以在同一个集群中实现不同类型的节点混合部署管理。
    • 同一个集群中,允许创建不同操作系统(CentOS、Windows、AliyunLinux)的节点池。
    • 同一个集群中,允许创建不同容器运行时(安全沙箱、Docker)的节点池。
    • 同一个集群中,允许创建不同计费类型(按量付费、包年包月、抢占实例)的节点池。
    • 同一个集群中,允许创建不同自动伸缩策略的节点池。
  • 每个节点池可以为节点指定不同的配置。
    • 资源相关:比如节点规格、交换机、系统盘和数据盘、安全组、登录方式等。
    • 节点配置:比如节点自定义数据、CPU管理策略、标签、污点(Taints)等。

节点池使用限制

  • 目前节点池对Kubernetes版本为1.12.6-aliyun.1及以上的ACK集群开放。

  • 每个ACK集群默认20个节点池(可自助到配额平台提交申请增加配额),每个节点池可创建1000个节点。

节点池计费

每个节点池对应一个弹性伸缩组实例,节点池本身不额外收费。关于弹性伸缩的计费详情,请参见费用说明

节点池类型

ACK节点池类型有自定义节点池、默认节点池、弹性节点池、托管节点池。

自定义节点池后端与弹性伸缩组实例一比一对应。当对节点池执行扩容和缩容时,ACK通过弹性伸缩服务下发扩容和移除节点的操作。当节点池添加已有节点时,ACK也会将ECS实例添加到弹性伸缩组中进行统一管理。ACK支持操作如下:

  • 扩容节点池:创建节点池对应的弹性伸缩组实例,并配置伸缩规则。
  • 指定移除节点:从API Server中移除节点信息,从弹性伸缩组中移出节点。
  • 编辑节点池配置:修改节点池配置,更新弹性伸缩组信息。
  • 克隆节点池:复制节点池。
  • 删除节点池:删除对应的弹性伸缩组实例 (删除前必须将节点池内节点全部移除)。

后端与一个弹性伸缩组实例绑定,所绑定的弹性伸缩组实例由创建集群时自动分配,不会创建额外实例。当您使用API扩容节点池和添加节点时,会将节点添加到默认节点池中。除了不支持删除。 其他行为和自定义节点池一致。ACK支持操作如下:

  • 不支持删除节点池,其他操作和自定义节点池一致。
  • 创建集群时自动分配。
  • 存量的3可用区专有集群由于创建集群时同时分配3个弹性伸缩组,会分别同步3个默认节点池,并对应弹性伸缩组。

弹性节点池创建过程与自定义节点池一致。创建后弹性节点池会在集群中部署cluster-autoscaler组件,该组件通过计算集群的容器数触发节点自动扩缩容。关于自动扩缩容的更多信息,请参见下文相关文档中的节点自动伸缩

与自定义节点池不同的地方:

  • 不支持手动扩容。
  • 配置最大和最小实例数,决定节点池自动扩缩容的边界。
  • 付费类型支持Spot竞价实例。
  • 弹性模式上除了普通CPU实例,还支持GPU实例和GPU共享实例。
  • 允许您关闭弹性伸缩配置,将弹性节点池切换为普通节点池 (反向操作不允许)。

托管节点池是ACK全新推出的具有自动升级、节点自愈能力的免运维型节点池,为您提供统一的、全托管的节点生命周期管理。您无需关心节点运维操作,如节点组件版本更新,OS版本更新,CVE更新等,ACK会自行修复节点池内的故障节点。更多信息,请参见下文相关文档中的托管节点池概述

不同节点池类型对比

对比项 默认节点池 自定义节点池 弹性节点池 托管节点池
扩容方式 手动扩缩容 手动扩缩容 自动扩缩容
说明 不支持手动扩容。
手动扩缩容
可否删除 不可删除 允许删除
说明 删除自定义节点池前,您需清空节点池内所有节点。
允许删除 允许删除
说明 删除托管节点池前,您需清空节点池内所有节点。
付费类型 按量实例或者包年包月 按量实例或者包年包月 按量实例或者Spot竞价实例 按量实例或者包年包月
节点升级
  • 仅支持手动触发升级。
  • 仅支持升级Kubelet版本。
  • 升级方式为原地升级。
  • 仅支持手动触发升级。
  • 仅支持升级Kubelet版本。
  • 升级方式为原地升级。
  • 仅支持手动触发升级。
  • 仅支持升级Kubelet版本。
  • 升级方式为原地升级。
  • 支持在维护窗口内的自动升级。
  • 支持手动触发升级。
  • 支持升级节点操作系统、Docker版本、Kubelet版本、CVE漏洞等。
  • 升级方式为替换系统盘。
登录方式 同时支持密钥对和密码。 同时支持密钥对和密码。 同时支持密钥对和密码。 不支持使用密码登录,仅支持使用密钥对。
自动故障修复 不支持 不支持 不支持 支持