在ACK集群中,节点是集群中的物理或虚拟机器,用于运行容器化应用程序。节点池是一组具有相同配置和用途的节点,例如节点规格、可用区、标签、污点等,便于对集群中的节点进行分组管理和运维。您可以在创建节点池时指定节点属性,也可以修改存量节点池的配置。
前提条件
已创建ACK集群。具体操作,请参见创建ACK托管集群。
已通过kubectl工具连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
节点池类型
普通节点池:为提供管理一组同质节点的能力,同一个节点池内具有相同的节点配置,例如规格、标签(Label)、污点(Taint)。更多信息,请参见节点池概述。
托管节点池:在普通节点池基础上,提供CVE自动修复、自动触发故障节点修复等能力,从而实现托管的自动化节点运维。更多信息,请参见托管节点池概述。
说明仅ACK集群Pro版支持托管节点池。
关于两种节点池的差异,请参见托管节点池与普通节点池的区别。
操作步骤
创建或编辑节点池时不会影响其他已有节点池内节点和业务的运行。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池。
在节点池页面右上角,单击创建节点池,然后在创建节点池对话框,完成创建节点池的配置项。
普通配置
普通配置
配置项
描述
节点池名称
自定义的节点池名称。
托管节点池相关配置
托管节点池
是否开启托管功能。
托管节点池是ACK推出的具有操作系统(OS)CVE漏洞修复、节点自愈等能力的免运维型节点池,可以降低对节点池的运维管理负担,同时提升节点安全性。更多信息,请参见托管节点池概述。
自愈规则
选中开启托管节点池后,可设置此配置项。
勾选当节点故障时重启节点后,节点NotReady时,系统会尝试自动重启相关组件来修复故障节点,并在重启前执行排水。
自动升级规则
选中开启托管节点池后,可设置此配置项。
勾选自动升级 Kubelet 及 Containerd后,系统会在有可用的kubelet版本时自动升级到该版本。更多信息,请参见升级节点池。
自动修复 CVE(OS)
选中开启托管节点池后,可设置此配置项。
指定自动修复漏洞的级别,包括高危、中危、低危漏洞。更多信息,请参见托管节点池节点自动恢复、修复节点池操作系统CVE漏洞。
有些漏洞修复完成后需要重启服务器来使其修复生效。勾选必要时重启节点以修复 CVE 漏洞后,系统会按需自动重启节点;未开启时,需在修复完成后手动重启节点。
集群维护窗口
托管节点池将在维护窗口进行自动化升级,例如节点池镜像升级、运行时升级、Kubernetes版本等。更多信息,请参见托管节点池概述。
地域
默认选择集群所在地域,且不可更改。
加密计算
说明当前仅白名单用户可以配置加密计算,请提交工单申请。
仅容器运行时选择为Containerd时,需配置该参数。
是否开启加密计算。加密计算是为有强安全诉求的用户提供基于硬件加密技术的云原生一站式机密计算容器平台,可以帮助您保护数据使用(计算)过程中的安全性、完整性和机密性,同时简化可信或机密应用的开发、交付和管理成本。更多信息,请参见ACK-TEE机密计算介绍。
容器运行时
根据集群Kubernetes版本选择容器运行时。
containerd:推荐使用,支持所有版本的集群。
安全沙箱:支持1.24及以下版本的集群。
Docker:支持1.22及以下版本的集群。
网络配置
专有网络
默认选择集群VPC,节点池创建完成后不可更改。
交换机
节点池的扩缩容将根据扩缩容策略,在选择的虚拟交换机可用区下弹出节点。您可以在已有虚拟交换机列表中,根据可用区选择交换机。
如果没有您需要的交换机,可以单击创建虚拟交换机创建。具体操作,请参见创建和管理交换机。
自动伸缩
是否开启自动伸缩。自动伸缩可根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。更多信息,请参见弹性伸缩概述。开启前,请先配置节点池的自动弹性伸缩能力,操作步骤可参考步骤一:开启节点自动伸缩。
付费类型
节点池支持按量付费、包年包月和抢占式实例三种节点付费类型。
选择按量付费时,计费项为ECS实例,节点池不计费。
选择包年包月时,需配置购买时长以及自动续费。
选择抢占式实例时,需设置以下参数。
单台实例上限价格:当指定实例规格的实时市场价格低于单台实例上限价格时,能成功创建抢占式实例。超过保护期后(1小时),每5分钟检测一次实例规格的实时市场价格和库存。如果某一时刻的市场价格高于出价或实例规格库存不足,抢占式实例会被释放。
目前ACK仅支持具有保护期的抢占式实例。更多信息,请参见什么是抢占式实例、抢占式实例节点池最佳实践。
重要修改节点池的付费类型仅对扩容的新节点生效,不会改变节点池内已有节点的付费类型。如果您期望修改节点池中已有节点的付费类型,请参见按量付费转包年包月。
为保证节点池的统一,不支持按量付费、包年包月节点池修改为抢占式实例节点池;也不支持抢占式实例节点池修改为按量付费、包年包月节点池。
节点实例配置
实例相关的配置项
根据实例规格或属性选择Worker节点池使用的ECS实例,可通过vCPU、内存、规格族、架构等属性进行筛选。
节点池扩容时,将从选中的实例规格中扩容。具体扩容到的实例规格取决于节点池扩缩容策略。选择的实例规格越多,节点池成功弹出节点的概率越大。
由于实例规格不可用或库存不足,导致节点池弹出节点失败时,可以尝试添加更多实例规格。您可以参照控制台的弹性强度建议添加实例规格,也可以创建节点池后查看节点池弹性强度。
说明Arm实例仅支持Arm镜像。关于Arm节点池,请参见配置ARM节点池。
如果您选择的实例均为GPU服务器,您可以按需开启共享 GPU 调度。更多信息,请参见共享GPU调度概述。
系统盘
支持ESSD AutoPL、ESSD云盘、ESSD Entry、SSD云盘和高效云盘。
系统盘可选的类型与选择的实例规格相关。如果云盘类型下拉列表没有显示的云盘类型,代表不支持该云盘类型。 关于云盘的更多信息,请参见块存储概述;查询实例规格支持的云盘类型,请参见实例规格族。
说明ESSD云盘支持自定义性能级别。ESSD云盘容量越大,可供选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3)。更多信息,请参见容量范围与性能级别的关系。
创建系统盘时,仅ESSD云盘支持加密。选择密钥时,阿里云默认使用服务密钥(Default Service CMK)进行加密,您也可以选择事先在KMS服务中创建好的自定义密钥(BYOK)为该云盘加密。
您可以选择配置更多系统盘类型,配置与系统盘不同的磁盘类型,提高扩容成功率。创建实例时,系统将根据指定的磁盘类型顺序,选择第一个匹配的磁盘类型用于创建实例。
数据盘
支持ESSD AutoPL、ESSD云盘、ESSD Entry以及上一代云盘(SSD云盘和高效云盘)。挂载数据盘时,数据盘可选的类型与选择的实例规格相关。如果云盘类型下拉列表没有显示的云盘类型,代表不支持该云盘类型。 关于云盘的更多信息,请参见块存储概述;查询实例规格支持的云盘类型,请参见实例规格族。
ESSD AutoPL还支持:
预配置性能:在保持存储容量大小不变的情况下,可以结合实际业务的需求量灵活配置云盘的预配置性能,从而实现云盘容量与性能解耦。
性能突发:开启后,波动性业务面临突发的数据读写压力时,云盘会根据业务实际情况临时提升云盘性能,直至业务恢复至平稳状态。
ESSD云盘还支持:
自定义性能级别。ESSD云盘容量越大,可供选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3)。更多信息,请参见容量范围与性能级别的关系。
挂载数据盘时,所有云盘类型均支持加密。选择密钥时,阿里云默认使用服务密钥(Default Service CMK)进行加密,您也可以选择事先在KMS服务中创建好的自定义密钥(BYOK)为该云盘进行加密。
在需要容器镜像加速、大模型模型快速加载等场景下,您还可以使用快照创建数据盘,提升系统的响应速度和处理能力。
每个节点上需有一块数据盘被挂载到
/var/lib/container
(/var/lib/kubelet
、/var/lib/containerd
将挂载到/var/lib/container
目录下)。对于节点上的其他数据盘,您可以进行初始化设置,自定义其挂载目录。使用说明,请参见ACK节点池中数据盘可以自定义目录挂载吗?
说明一台ECS实例最多可挂载64块数据盘,不同实例规格支持挂载的最多云盘数量不同。实例规格支持挂载的云盘数量上限,可以通过DescribeInstanceTypes接口查询(DiskQuantity)。
期望节点数
节点池应该维持的总节点数量。您可以通过调整期望节点数,达到扩容或缩容节点池的目的。如无需创建节点,可以填写为0。更多信息,请参见扩缩容节点池。
操作系统
容器服务 Kubernetes 版支持ContainerOS、Alibaba Cloud Linux 3、Ubuntu、Windows等操作系统。详细信息,请参见操作系统镜像概述。
说明修改节点池系统镜像时,仅影响新增节点,不会修改节点池已有节点的系统镜像。已有节点的系统镜像升级,请参见升级节点池。
为保证节点池内节点系统镜像的统一,修改节点池镜像时,仅允许修改为同类型镜像的最新版本,不支持更改镜像类型。
安全加固
不开启:对ECS实例不进行安全加固。
等保加固:仅当系统镜像选择Alibaba Cloud Linux 2或Alibaba Cloud Linux 3时,可为节点开启等保加固。阿里云为Alibaba Cloud Linux 2和Alibaba Cloud Linux 3等保2.0三级版镜像提供等保合规的基线检查标准和扫描程序。更多信息,请参见ACK等保加固使用说明。
重要等保加固在保障原生镜像兼容性和性能的基础上进行了等保合规适配,使其满足国家信息安全部发布的《GB/T22239-2019信息安全技术网络安全等级保护基本要求》。
等保加固会禁止Root用户通过SSH远程登录。您可通过ECS控制台使用VNC方式登录系统创建可使用SSH的普通用户。具体操作,请参见使用VNC登录实例。
阿里云 OS 加固:仅当系统镜像选择Alibaba Cloud Linux 2或Alibaba Cloud Linux 3时,可为节点开启阿里云OS加固。
说明集群创建完成后,安全加固选项不支持修改。
登录配置
登录方式
登录名
当登录方式选择设置密钥或者设置密码时,需按需选择以root登录还是以ecs-user登录。
公网 IP
是否为节点分配IPv4地址。如果未选中,不会配公网IP地址,当选择公网IP后,还需配置带宽计费方式和带宽峰值。
说明该选项仅对节点池新增节点生效,对节点池已有节点无效。已有节点如需访问公网,请配置并绑定弹性公网IP地址。具体操作,请参见将EIP绑定至ECS实例。
云监控插件
是否安装云监控插件。安装后,可在云监控控制台查看所创建ECS实例的监控信息。
说明该选项仅对节点池新增节点生效,对节点池已有节点无效。已有节点如需安装云监控插件,请通过云监控控制台安装。
高级配置
高级配置
配置项
描述
ECS 标签
为弹出的ECS添加标签,标签键不可重复。最大长度为128个字符,标签键和标签值不能以
aliyun
、acs:
开头,不能包含https://
、http://
。一台ECS可绑定标签的上限为20个。如需提高上限,请到配额平台提交申请。由于ACK和ESS存在以下标签占用,因此最多可指定17个ECS标签。
ACK默认占用两个ECS标签。
ack.aliyun.com:<您的集群ID>
ack.alibabacloud.com/nodepool-id:<您的节点池ID>
ESS默认占用1个ECS标签:
acs:autoscaling:scalingGroupId:<您的节点池伸缩组ID>
。
说明开启弹性伸缩后,因弹性伸缩将默认占用两个ECS标签,因此节点池会额外占用两个ECS标签:
k8s.io/cluster-autoscaler:true
和k8s.aliyun.com:true
。自动伸缩组件为了预检测弹出节点的调度行为,需依靠ECS标签记录K8s的节点标签和污点。因此,节点的每个标签都会被转为
k8s.io/cluster-autoscaler/node-template/label/标签键:标签值
;节点的每个污点会被转为k8s.io/cluster-autoscaler/node-template/taint/污点键/污点值:污点效果
。
污点 (Taints)
为节点添加污点,污点(Taints)包含键、值和Effect(效果)。有效污点键包含前缀(可选)和名称。如果有前缀,用正斜线(/)分隔。更多信息,请参见污点和容忍度。污点有以下限制:
键:污点键的名称长度为1~63个字符,必须以字母、数字或字符
[a-z0-9A-Z]
开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。如果指定前缀,必须是DNS子域。即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,并以正斜线(/)结尾。关于DNS子域,请参见DNS子域。
值:污点值可以为空,不超过63个字符,必须以字母、数字或字符
[a-z0-9A-Z]
开头和结尾,可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。Effect:可选择NoSchedule、NoExecute、PreferNoSchedule三种。
NoSchedule:如果污点中存在至少一个Effect值为NoSchedule的污点,则系统不会将Pod分配到该节点。
NoExecute:任何不能忍受这个污点的Pod都会被驱逐,任何可以忍受这个污点的Pod都不会被驱逐。
PreferNoSchedule:系统会尽量避免将Pod调度到存在其不能容忍污点的节点上,但不会强制执行。
节点标签
为节点添加标签,标签是键值对。有效标签键包含前缀(可选)和名称,如果有前缀,前缀和名称之间用正斜线(/)分隔。标签有以下限制:
标签键的名称长度为1~63个字符,必须以字母数字字符
[a-z0-9A-Z]
开头和结尾,中间可包含字母、数字、短划线(-)、下划线(_)、英文半角句号(.)。如果指定前缀,必须是DNS子域。即一系列由英文半角句号(.)分隔的DNS标签,不超过253个字符,以正斜线(/)结尾。关于DNS子域,请参见DNS子域。
标签键中以下前缀由Kubernetes核心组件保留,不支持指定。
kubernetes.io/
k8s.io/
以
kubernetes.io/
和k8s.io/
结尾的前缀。例如test.kubernetes.io/
。以下除外:
kubelet.kubernetes.io/
node.kubernetes.io
以
kubelet.kubernetes.io/
结尾的前缀。以
node.kubernetes.io
结尾的前缀。
标签值可以为空,不超过63个字符,必须以字母数字字符
[a-z0-9A-Z]
开头和结尾,可包含字母、数字、短划线(-)、下划线(_)和英文半角句号(.)。选中设置为不可调度后,新添加的节点注册到集群时默认设置为不可调度。如果想打开存量节点的调度选项,可在集群节点列表中开启。
伸缩模式
为节点池开启自动伸缩后,可以选择ECS实例伸缩的方式。
标准模式:通过创建、释放ECS实例的方式进行伸缩。
极速模式:通过创建、停机、再启动ECS实例的方式进行伸缩,以便在需要再次伸缩时,直接重新启动处于停机状态的实例,提高伸缩速度。
ECS实例停机时不收取计算资源费用,只收取存储费用(包含本地存储能力的实例规格族除外,例如大数据型、本地SSD型等)。关于ECS实例停机模式的计费详情及相关注意事项,请参见节省停机模式。
扩缩容策略
优先级策略:根据以上配置的虚拟交换机的优先级进行扩缩容(选择的虚拟交换机的顺序,由上到下优先级递减)。当优先级较高的虚拟交换机所在可用区无法创建ECS实例时,自动使用下一优先级的虚拟交换机创建ECS实例。
成本优化策略:按vCPU单价从低到高尝试创建。当伸缩配置已设置抢占式计费方式的多实例规格时,优先创建对应抢占式计费实例。当抢占式计费实例规格由于库存等原因无法创建时,自动尝试以按量付费的方式创建。
当付费类型为抢占式实例时,除允许抢占式实例补偿外,您还可以配置以下参数:
按量实例所占比例%:节点池实例中按量实例应占的比例,取值范围为[0,100]。
允许按量实例补偿:开启后,如果因价格或库存等原因无法创建足够的抢占式实例,伸缩组将自动尝试创建按量实例,以满足ECS实例数量要求。
均衡分布策略:只有设置多个专有网络交换机时,均衡分布策略才能生效。在伸缩组指定的多可用区(即指定多个专有网络交换机)之间均匀分配ECS实例。如果由于库存不足等原因造成可用区之间不平衡,您可以再次进行均衡操作,以平衡资源的可用区分布。
重要节点池创建完成后,扩缩容策略不支持编辑。
当付费类型为抢占式实例时,您可以设置是否开启允许抢占式实例补偿。开启后,当收到抢占式实例将被回收的系统消息时(即抢占式实例被回收前5分钟左右),开启弹性的节点池将尝试创建新的实例,替换掉将被回收的抢占式实例。
CPU Policy
更多信息,请参见CPU管理策略。
资源组
创建的集群将归属于选择的资源组。一个资源只能归属于一个资源组。根据不同的业务场景,您可以将资源组映射为项目、应用或组织等概念。
部署集
重要部署集为白名单功能,若您需要开启该功能,请在配额中心申请。
部署集一旦指定将不能修改。
选择部署集后,节点池内最大节点数会受限。部署集默认支持节点上限为
20 * 可用区数量
(可用区数量由虚拟交换机决定)。请谨慎选择,确保部署集内配额充足,避免节点弹出失败。
您需要先通过ECS控制台创建部署集,然后通过ACK控制台为节点池指定部署集。创建部署集,请参见创建部署集。
您可以使用部署集将节点池弹出的ECS实例分散部署在不同的物理服务器上,以保证业务的高可用性和底层容灾能力。在部署集内创建ECS实例时,根据事先设置的部署策略,分散启动指定地域下的ECS实例。更多信息,请参见节点池部署集最佳实践。
自定义安全组
可选择普通安全组或企业级安全组,仅支持同时选择一种类型的安全组。节点池的安全组不支持修改,安全组的类型也不允许变更。关于安全组的更多信息,请参见安全组概述。
自定义镜像
配置自定义镜像后,自定义镜像将取代默认系统镜像。
自定义ECS镜像:集群所有节点将基于此镜像进行部署。关于创建自定义镜像操作,请参见基于自定义镜像创建集群或节点池。
共享ECS镜像:集群所有节点将基于此镜像进行部署。关于共享镜像的更多信息,请参见操作步骤。
RDS 白名单
单击请选择您想要添加白名单的RDS实例,将节点IP添加至RDS实例的白名单。
自定义节点名称
是否开启自定义节点名称。自定义节点名称后,将同时更改节点名称、ECS实例名称、ECS实例Hostname。
说明对于开启自定义节点名称的Windows实例,其Hostname固定为IP地址,使用
-
代替IP地址中的.
,且不包含前缀和后缀。节点名称由前缀、节点IP地址及后缀三部分组成:
总长度为2-64个字符。节点名称首尾必须为小写字母和数字。
前缀和后缀允许使用大小写字母、数字、连字符(-)和点号(.)。必须以大小写字母开头,不能以连字符(-)或点号(.)开头或结尾。不能连续使用连字符(-)或点号(.)。
前缀必选(ECS限制),后缀可选。
例如:节点IP地址为192.XX.YY.55,指定前缀为aliyun.com,后缀为test。
如果节点为Linux节点,则节点名称、ECS实例、ECS实例Hostname均为aliyun.com192.XX.YY.55test。
如果节点为Windows节点,则ECS实例Hostname为192-XX-YY-55,节点名称、ECS实例名称均为aliyun.com192.XX.YY.55test。
Worker RAM 角色
在节点池的维度指定一个Worker RAM角色,降低在集群所有节点中共用一个Worker RAM角色可能存在的风险。
默认角色:使用集群默认创建的Worker RAM角色。
自定义:节点池将使用指定的角色作为Worker RAM角色,为空时将使用默认角色。更多信息,请参见使用自定义Worker RAM角色。
重要仅支持1.22及以上版本的ACK托管集群。
实例预自定义数据
如需使用此功能,请前往配额平台提交申请。
节点加入集群前,将运行您指定的实例预自定义数据脚本。关于User-Data脚本,请参见User-Data脚本。
例如,指定实例预自定义数据为
echo "hello world"
,则节点实际运行脚本如下。#!/bin/bash echo "hello world" [节点初始化脚本]
实例自定义数据
节点加入集群后,将运行您指定的实例自定义数据脚本。关于User-Data脚本,请参见User-Data脚本。
例如,指定实例自定义数据为
echo "hello world"
,则节点实际运行脚本如下。#!/bin/bash [节点初始化脚本] echo "hello world"
说明创建集群或扩容节点成功不代表实例自定义脚本执行成功。您可以登录节点执行
grep cloud-init /var/log/messages
命令查看执行日志。私有池类型
说明目前处于灰度发布中。如需使用,请提交工单申请。
私有池类型包括:开放、不使用和指定。
开放:实例将会自动匹配开放类型的私有容量池,如果没有符合条件的私有池,则使用公共池资源启动。
不使用:实例不会使用任何私有池容量,直接使用公共池资源启动。
指定:您需要进一步选择私有池ID来指定实例只使用该私有池容量启动,如果该私有池不可用,则实例启动失败。
关于私有池的更多信息,请参见私有池。
单击确认配置。
在节点池列表,如果节点池状态显示初始化中,表明节点池正在创建。创建完成后,状态显示为已激活。
相关操作
节点池激活完成后,您可以在节点池列表的操作列或单击操作列的更多,按需进行以下操作。
界面词 | 说明 | 相关文档 |
详情 | 节点池配置详情。 | 无。 |
编辑 | 调整节点池的配置,例如节点池所在的虚拟交换机、托管节点池配置、付费类型、实例规格、启用或停用弹性伸缩等。 | |
监控 | 集成阿里云Prometheus监控服务,展示对应ECS实例的基本监控信息。 | |
扩缩容 | 自动化调整节点池的期望节点数,实现节点池扩缩容,将节点数目维持在期望数量,节省业务成本。 | |
托管配置 | 开启托管节点池的相关配置,例如自愈规则、自动升级规则、CVE自动修复等。 | 前文的普通配置 |
添加已有节点 | 通过自动添加节点和手动添加节点两种方式将已有的ECS实例添加到已创建的Kubernetes集群中。 | |
克隆 | 基于现有节点池配置,克隆期望数量的节点池。 | 无。 |
节点恢复 | 当集群托管节点池中的节点发生异常时,ACK会自动发起节点恢复操作,使节点保持正常运行状态。 | |
CVE修复 | 一键修复节点池高危CVE漏洞的便捷能力。 | |
Kubelet配置 | 修改节点池内节点的kubelet配置。 | |
升级 | 对kubelet、操作系统和容器运行时按需组合升级。 | |
删除 | 删除不再使用的节点池,以减少不必要的资源浪费。 |