节点池可以管理集群中的一组节点资源,例如在节点池中统一管理节点的标签和污点。如需创建操作系统类型为Windows的节点,您可以在ACK集群中创建Windows节点池,并在节点池维度进行kubelet、运行时和操作系统镜像版本的升级。
使用限制
下表介绍了创建Windows节点池时必须满足的条件。
限制项 | 说明 |
集群 |
|
容器运行时 | 仅1.6及以上版本的containerd支持Windows节点池。 如需升级运行时版本,请参见升级节点池。 |
节点池类型 | 仅支持将非托管节点池创建为Windows节点池。 |
实例规格 |
|
下表介绍创建Windows节点池时的使用限制。
限制项 | 说明 |
操作系统 | Windows节点池支持的操作系统为Windows Server 2019、Windows Server 2022和Windows Server Core,Version 2022。 说明 ACK控制台支持选择Windows Server 2019、Windows Server 2022和Windows Server Core,Version 2022。如果您有使用Windows Server Core,Version 2004的需求,请根据ECS公共镜像发布记录来选择最新的镜像ID创建节点池。更多信息,请参见2023年公共镜像发布记录。 |
节点数量 | 默认情况下,每个集群中最多可包含100个节点。如果您需要添加更多节点,请到配额平台提交申请。 |
云服务器 | 添加已有云服务器时,请确保您的专有网络中的ECS实例已绑定一个弹性公网IP(EIP),或者相应VPC已配置NAT网关。请确保相应节点能正常访问公网,否则,添加云服务器会失败。关于添加已有ECS实例的注意事项和操作步骤,请参见添加已有节点。 |
创建Windows节点池
控制台
不支持创建默认节点池(default-nodepool)为Windows节点池。请参见上文使用限制,在创建集群后额外创建Windows节点池。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在节点池页面右上角,单击创建节点池,设置相关配置项,然后单击确认配置。
关于配置项的详细说明,请参见创建和管理节点池。部分配置项说明如下。
配置项
说明
托管配置
选择不开启。
容器运行时
选择containerd。
实例规格
不同实例规格对Windows节点池的支持情况不同,有些实例规格不支持Windows节点池,需要进行多次尝试。例如您可以选择ecs.g6.xlarge,此实例规格支持Windows节点池。
请选择4核8GB以上的规格。
请选择非GPU云服务器架构的实例规格。
更多关于实例规格的信息,请参见实例规格族。
期望节点数
节点池应该维持的节点数量。指定节点池的期望节点数后,节点池会自动触发扩容或缩容,将节点数目维持在期望数量。
操作系统
选择Windows操作系统。
ECS 标签
为ECS实例添加标签。
节点标签(Labels)
为集群节点添加标签。
在节点池页面,当节点池状态显示为就绪,表明Windows节点池创建成功。
API
您可以调用CreateClusterNodePool接口创建Windows 节点池,配置节点数量、节点规格等参数。示例参数如下。
{
"ClusterId": "ca8ed83XXXXXXXXXXXX5ec197", // 集群ID。
"body": {
"nodepool_info": {
"name": "nodepool-fXXXXXx", // 节点池名称。
"resource_group_id": "rg-acfmXXXXXXXXsjpq" // 集群所属资源组 ID,实现不同资源的隔离。
},
"scaling_group": {
"vswitch_ids": [ // 集群节点所在虚拟交换机,当创建零节点的托管版集群时,该字段必填。
"vsw-bp1XXXXXXXXXXXXX1xm84",
"vsw-bp1XXXXXXXXXXXX2v6x0a",
"vsw-bp1XXXXXXXXXXXXXjkxbo"
],
"data_disks": [ // Worker 节点数据盘类型、大小等配置的组合。
{
"category": "cloud_essd",
"size": 120,
"encrypted": "false",
"performance_level": "PL0"
}
],
"vpc_id": "vpc-bpXXXXXXXXXXXXXXXmgb6", // 集群VPC_ID。
"instance_charge_type": "PostPaid", // 节点付费类型,取值:PrePaid(预付费实例)。 PostPaid(按量付费)。默认值:PostPaid 。
"internet_max_bandwidth_out": 1, // 节点公网 IP 出带宽最大值,单位为 Mbps(Mega bit per second),取值范围:[1,100]
"soc_enabled": false, // 节点开启等保加固。取值:true:开启。false:不开启。
"security_hardening_os": false, // 是否开启阿里云OS安全加固。取值:true:开启。 false:不开启。默认值:false。
"instance_types": [ // 实例规格。
"ecs.n2.large"
],
"instance_patterns": [ // 实例属性配置。
{
"Cores": 4,
"Memory": 16,
"burst_performance_option": "Exclude", // 是否为性能突发实例规格。
"excluded_instance_types": [ // 需要排除的实例规格。
"ecs.c6t.*"
// ...
],
"instance_type_families": [ // 指定实例规格族。
"ecs.g6"
// ...
]
}
],
"login_password": "XXXXXX",
"login_as_non_root": false,
"system_disk_category": "cloud_essd",
"system_disk_size": 40,
"system_disk_performance_level": "PL0",
"system_disk_encrypted": false,
"multi_az_policy": "BALANCE", // 多可用区伸缩组 ECS 实例扩缩容策略。
"platform": "WindowsServer2022",
"image_id": "win2022_21H2_x64_dtc_en-us_40G_container_alibase_20240220.vhd",
"image_type": "WindowsServer2022",
"desired_size": 1
},
"kubernetes_config": { // 集群相关配置。
"cms_enabled": true, // 是否在 ECS 节点上安装云监控,安装后可以在云监控控制台查看所创建 ECS 实例的监控信息,推荐开启。
"unschedulable": false, // 扩容后的节点是否不可调度。 true:不可调度。 false:可调度。
"runtime": "containerd",
"runtime_version": "2.1.1" // 仅1.6及以上版本的containerd支持Windows节点池。
},
"auto_scaling": { // 自动弹性伸缩节点池配置。 true:开启节点池自动伸缩功能。 false:不开启自动伸缩。
"enable": false
},
"tee_config": { // 加密计算节点池配置。 true:开启加密计算。false:不开启加密计算。
"tee_enable": false
},
"node_config": { // 节点配置。
"image_acceleration_config": {
"enable_image_acceleration": false
}
}
}
}
Terraform
您可以参见Terraform概述文档创建Windows 节点池,配置节点数量、节点规格等参数。示例参数如下。
provider "alicloud" {
region = "cn-hangzhou"
}
resource "alicloud_cs_kubernetes_node_pool" "pool" {
tee_config {
tee_enable = false
}
runtime_version = "2.1.1" // 容器运行时版本,仅1.6及以上版本的containerd支持Windows节点池。
resource_group_id = "rg-acXXXXXXXjpq"
multi_az_policy = "BALANCE"
node_pool_name = "nodepool-fqLfdx"
login_as_non_root = false
runtime_name = "containerd"
cluster_id = "ca8ed83XXXXXXXXXXXXXXXXa55ec197"
password = "XXXXXXX"
data_disks {
size = 120
encrypted = "false"
performance_level = "PL0"
category = "cloud_essd"
}
instance_charge_type = "PostPaid" // 节点付费类型,取值:PrePaid(预付费实例)。 PostPaid(按量付费)。默认值:PostPaid 。
desired_size = 1
unschedulable = false
scaling_config {
enable = false
}
image_type = "WindowsServer"
vswitch_ids = [
"vsw-bp1XXXXXXXXXXXXXXXX84",
"vsw-bp1XXXXXXXXXXXXXXXX0a",
"vsw-bp1XXXXXXXXXXXXXXXXXo"
]
instance_types = [ // 实例规格。节点池节点实例规格列表,节点池弹出节点时,将从指定的实例规格列表中,挑选出符合要求的实例规格弹出实例。
"ecs.g6.large"
]
soc_enabled = false // 等保加固。取值:true:开启等保加固。false:不开启等保加固。
internet_max_bandwidth_out = 1 // 节点公网 IP 出带宽最大值,单位为 Mbps(Mega bit per second),取值范围:[1,100]
system_disk_encrypted = false // 是否加密系统盘。取值范围: true:加密。false:不加密。
system_disk_size = 40
install_cloud_monitor = true
system_disk_category = "cloud_essd"
system_disk_performance_level = "PL0"
image_id = "win2022_21H2_x64_dtc_en-us_40G_container_alibase_20240220.vhd"
security_hardening_os = false
}
升级Windows节点池
节点池升级包括kubelet升级和容器运行时升级。请在升级节点池前,确保已升级控制面至目标版本。
kubelet升级:将节点池内节点的kubelet升级到与控制面相同的版本。
容器运行时升级:容器运行时发布新版本后,可升级节点的容器运行时至最新版本。
您可以参见升级节点池了解升级的注意事项和操作入口。配置升级方式时,Windows节点池需选择通过替换节点系统盘的方式进行升级。
升级Windows节点池的操作系统镜像
您可参见更换操作系统将节点池的操作系统镜像升级至最新版本,以享用新的功能特性、功能优化和缺陷修复。
可参见操作系统了解镜像的最新版本。
相关文档
您可参见创建Windows应用将应用部署在Windows节点上。
如您的业务有不易提前预测的瞬时波峰且需使用Windows节点,推荐使用Windows虚拟节点,并将Pod调度到该虚拟节点上,请参见(邀测)调度Pod到Windows虚拟节点。