在 Azure Kubernetes 服务 (AKS) 群集中手动缩放节点数
如果应用程序的资源需求发生变化,群集性能可能会因 CPU、内存、PID 空间或磁盘大小不足而受到影响。 若要解决这些变化,可以手动缩放 AKS 群集以运行不同数量的节点。 节点数减少时,节点会被仔细封锁和排除,尽量避免对正在运行的应用程序造成中断。 纵向扩展时,AKS 会一直等待,直到节点被 Kubernetes 群集标记为“就绪”,然后才在这些节点上计划 Pod。
本文介绍如何手动增加或减少 AKS 群集中的节点数。
开始之前
查看 AKS 服务配额和限制,以验证群集是否可缩放到所需的节点数。
节点池的名称只能包含小写字母数字字符,且必须以小写字母开头。
- 对于 Linux 节点池,长度必须在 1-11 个字符之间。
- 对于 Windows 节点池,长度必须在 1-6 个字符之间。
缩放群集节点
重要
不支持使用 kubectl 命令从节点池中删除节点。 这样做可能会导致 AKS 群集出现缩放问题。
使用
az aks show
命令获取节点池的名称。 以下示例获取 myResourceGroup 资源组中名为 myAKSCluster 的群集的节点池名称:az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
以下示例输出表明名称为 nodepool1:
[ { "count": 1, "maxPods": 110, "name": "nodepool1", "osDiskSizeGb": 30, "osType": "Linux", "vmSize": "Standard_DS2_v2" } ]
使用
az aks scale
命令扩展群集节点。 以下示例将名为 myAKSCluster 的群集缩放为单个节点。 提供前一个命令中你自己的--nodepool-name
,如 nodepool1:az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
以下示例输出显示群集已成功缩放为一个节点,如 agentPoolProfiles 部分中所示:
{ "aadProfile": null, "addonProfiles": null, "agentPoolProfiles": [ { "count": 1, "maxPods": 110, "name": "nodepool1", "osDiskSizeGb": 30, "osType": "Linux", "vmSize": "Standard_DS2_v2", "vnetSubnetId": null } ], [...] }
将 User
节点池缩放为 0
与始终需要运行节点的 System
节点池不同,User
节点池允许缩放为 0。 若要详细了解系统节点池和用户节点池之间的差异,请参阅系统节点池和用户节点池。
重要
无法在启用群集自动缩放程序的情况下将用户节点池缩放至 0 个节点。 若要将用户节点池缩放至 0 个节点,必须首先禁用群集自动缩放程序。 有关详细信息,请参阅在节点池上禁用群集自动缩放程序。
若要将用户池缩放为 0,可以使用 az aks nodepool scale 来替代上面的
az aks scale
命令,并将0
设置为节点计数。az aks nodepool scale --name <your node pool name> --cluster-name myAKSCluster --resource-group myResourceGroup --node-count 0
还可以通过将群集自动缩放程序的
--min-count
参数设置为0
,将User
节点池自动缩放为零个节点。
后续步骤
在本文中,你手动缩放了 AKS 群集以增加或减少节点数量。 还可以使用群集自动缩放程序自动缩放群集。