在本文中,你将了解 AKS 的新虚拟机节点池类型。
通过使用虚拟机节点池,AKS 直接管理每个节点的预配和启动。 对于虚拟机规模集节点池,AKS 管理虚拟机规模集的模型,并使用它跨节点池中的所有节点实现一致性。 借助虚拟机节点池,可以使用最适合单个工作负载的虚拟机来协调群集。
概述
工作原理
节点池由一组虚拟机组成,其中指定了不同的虚拟机大小以支持不同类型的工作负载。 这些虚拟机大小(称为 SKU)分为针对特定用途进行优化的不同系列。 有关详细信息,请参阅 VM SKU。
若要启用多种虚拟机大小的缩放,虚拟机节点池类型使用ScaleProfile
,该元素包含配置列表,列出所需的虚拟机大小和每种大小的数量,以指示节点池如何进行缩放。 A ManualScaleProfile
是一个缩放配置文件,它指定一个所需的虚拟机大小和节点池中该类型的总计数。
ManualScaleProfile
中只允许一个虚拟机大小。 需要为节点池中的每个虚拟机大小创建单独的 ManualScaleProfile
。 在创建新的虚拟机节点池时,根据以下说明,使用 vm-size
字段为虚拟机规模添加初始手动缩放配置文件,并确保包含 node-count
。 还可以按照 添加手动缩放配置文件的说明添加其他手动缩放配置文件。
注意
创建新的虚拟机实例池时,可以有多个缩放配置文件,并且实例池中至少需要一个手动缩放配置文件。
优点
虚拟机节点池类型的优点包括:
- 灵活性:可更新节点规范,以适应当前的工作负载和需求。
- 微调控制:单节点级控件支持指定和混合不同规格的节点,以解除单个模型的限制并提高一致性。
- 效率:可以减少群集的节点占用,从而简化操作要求。
虚拟机节点池为动态工作负载和高可用性要求提供更好的体验。 使用虚拟机节点池可以在一个节点池中设置多个相似系列的虚拟机。 工作负载将自动根据你配置的可用资源进行计划。
功能对比
下表重点介绍了虚拟机节点池与标准规模集节点池的比较情况。
节点池类型 | 功能 |
---|---|
虚拟机节点池 | 可以在节点池中添加、删除或更新节点。 虚拟机类型可以是同一系列类型的任何虚拟机(例如 D 系列、A 系列等)。 |
基于虚拟机规模集的节点池 | 可以在节点池中添加或删除大小和类型相同的节点。 如果将新的虚拟机大小添加到群集,需要创建新的节点池。 |
限制
- 目前不支持群集自动缩放程序。
- InifiniBand 不可用。
- Azure 门户不支持此功能。 必须使用 Azure CLI 或 REST API 来执行 CRUD 操作或管理池。
- 不支持节点池快照。
- 在一个节点池中选定的所有 VM 大小需要来自一个相似的虚拟机系列。 例如,不能将 N 系列虚拟机大小与同一节点池中的 D 系列虚拟机大小混合使用。
- 虚拟机节点池支持每个节点池有最多 5 种不同的虚拟机大小。
先决条件
- Azure 订阅。 如果没有,可以创建一个试用帐户。
- 已安装并配置 Azure CLI 2.73.0 或更高版本。 若要查找版本,请运行
az --version
。 有关安装或升级 Azure CLI 的详细信息,请参阅 安装 Azure CLI - 此功能需要 kubernetes 版本 1.27 或更高版本。 若要升级 kubernetes 版本,请参阅 升级 AKS 群集
创建具有虚拟机节点池的 AKS 群集
注意
一个缩放配置文件中只允许一种 VM 大小,而一个虚拟机节点池整体上最多支持 5 个 VM 缩放配置文件。
在
az aks create
标志设置为--vm-set-type
的情况下,使用"VirtualMachines"
命令创建具有虚拟机节点池的 AKS 群集。以下示例会创建一个名为 myAKSCluster 的群集(该群集具有一个包含两个节点的虚拟机节点池),生成 SSH 密钥,将负载均衡器 SKU 设置为“标准”,并将 Kubernetes 版本设置为 1.28.5:
az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --vm-set-type "VirtualMachines" \ --vm-sizes "Standard_D4s_v3" --node-count 2 \ --kubernetes-version 1.28.5
创建启用了 Windows 的群集和 Windows 虚拟机节点池
已启用 Windows 的群集中提供了虚拟机节点池。 以下示例使用虚拟机节点池创建名为 myAKSCluster 的群集。 这些步骤首先创建 Linux 系统池。
创建用户名,用作群集上 Windows Server 节点的管理员凭据。 以下命令会提示输入用户名,并将其设置为 WINDOWS_USERNAME ,以便在后面的命令中使用。
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
为你在上一步中创建的管理员用户名创建密码。 密码必须至少为 14 个字符,并且满足 [Windows Server 密码复杂性要求][windows-server-password]。
echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
使用
az aks create
设置为标志的--vm-set-type
命令"VirtualMachines"
创建启用了 Windows 的 AKS 群集和虚拟机类型节点池。az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --enable-addons monitoring \ --generate-ssh-keys \ --windows-admin-username $WINDOWS_USERNAME \ --windows-admin-password $WINDOWS_PASSWORD \ --vm-set-type "VirtualMachines" \ --network-plugin azure
使用将
az aks nodepool add
标志设置为--vm-set-type
的"VirtualMachines"
命令,将虚拟机节点池添加到已启用 Windows 的现有群集。 以下示例将名为 npwin 的虚拟机节点池添加到 myAKSCluster 群集:az aks nodepool add --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --os-type Windows \ --name npwin \ --vm-sizes "Standard_D2s_V3" \ --node-count 1 --vm-set-type "VirtualMachines"
将虚拟机节点池添加到现有群集
使用
az aks nodepool add
命令将混合 SKU 节点池添加到现有群集,并将--vm-set-type
标志设置为"VirtualMachines"
。以下示例将名为 myvmpool 的虚拟机节点池添加到 myAKSCluster 群集。 节点池创建了一个ManualScaleProfile,其中将
--vm-sizes
设置为Standard_D4s_v3,并将--node-count
设置为3:az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myvmpool \ --vm-set-type "VirtualMachines" \ --vm-sizes "Standard_D4s_v3" \ --node-count 3
将手动缩放配置文件添加到节点池
使用
az aks nodepool manual-scale add
将一个手动缩放配置文件添加到节点池,该节点池的--vm-sizes
标志设置为"Standard_D2s_v3"
,node-count
设置为2。以下示例将一个手动缩放配置文件添加到 myAKSCluster 群集中的 myvmpool 节点池。 节点池包含两个 VM SKU 为 Standard_D2s_v3 的节点:
az aks nodepool manual-scale add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myvmpool \ --vm-sizes "Standard_D2s_v3" \ --node-count 2
更新现有的手动缩放配置文件
使用
az aks nodepool manual-scale update
命令更新节点池中的现有手动缩放配置文件,并将--vm-sizes
标志设置为"Standard_D2s_v3"
。注意
使用
--current-vm-sizes
参数指定要更新的现有节点池的大小。 可以更新--vm-sizes
和/或--node-count
。 如果使用其他工具或 REST API,更新节点池缩放配置文件时需要传入完整agentPoolProfiles.virtualMachinesProfile.scale
字段。以下示例将一个手动缩放配置文件更新到 myAKSCluster 群集中的 myvmpool 节点池。 该命令将节点数更新为 5 个,并将 VM SKU 从 Standard_D4s_v3 更改为 Standard_D8s_v3:
az aks nodepool manual-scale update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myvmpool \ --current-vm-sizes "Standard_D4s_v3" \ --vm-sizes "Standard_D8s_v3" \ --node-count 5
删除手动缩放配置文件
使用
az aks nodepool manual-scale delete
命令删除现有的手动缩放配置文件。注意
--current-vm-sizes
参数指定要删除的现有节点池的大小。 如果使用其他工具或 REST API 更新节点池缩放配置文件,请传入完整的agentPoolProfiles.virtualMachinesProfile.scale
字段。以下示例会删除 myvmpool 节点池中 Standard_D8s_v3 VM SKU 的手动缩放配置文件。
az aks nodepool manual-scale delete \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myvmpool \ --current-vm-sizes "Standard_D8s_v3"
后续步骤
本文介绍了如何在 AKS 中使用虚拟机节点池。 若要详细了解 AKS 中的节点池,请参阅创建节点池。