如果应用程序的资源需求发生变化,群集性能可能会因 CPU、内存、PID 空间或磁盘大小不足而受到影响。 若要解决这些变化,可以手动缩放 AKS 群集以运行不同数量的节点。 横向缩减时,节点会被小心地隔离和清空,从而尽量避免中断正在运行的应用程序。 横向扩展时,AKS 会一直等待,直到节点被 Kubernetes 群集标记为“就绪”,然后才在这些节点上调度 Pod。
本文介绍如何手动增加或减少 AKS 群集中的节点数。
开始之前
查看 AKS 服务配额和限制,以验证群集是否可缩放到所需的节点数。
如果在节点池上启用了群集自动缩放程序,则无法手动更改节点计数。 可以 更新群集自动缩放程序最小值和最大值 ,或者在手动缩放 节点池之前禁用群集自动缩放程序 。
Azure Linux 2.0 支持于 2025 年 11 月 30 日结束。 从 2026 年 3 月 31 日开始,Azure Linux 2.0 节点映像被删除,受影响的节点池无法再缩放。 在缩放 Azure Linux 2.0 节点池之前迁移到 Azure Linux 3。
节点池名称必须满足以下要求:
节点池类型 名称要求 Linux 介于 1-12 个小写字母数字字符之间。 必须以小写字母开头。 Windows操作系统 介于 1-6 个小写字母数字字符之间。 必须以小写字母开头。
在 AKS 中缩放群集节点
重要
不支持使用 kubectl 命令从节点池中删除节点。 此操作可能会导致您的 AKS 群集出现缩放问题。
- Azure CLI
- Azure PowerShell
使用
az aks show命令获取节点池的名称、模式和节点计数。 以下示例获取 myResourceGroup 资源组中名为 myAKSCluster 的群集的节点池详细信息:az aks show --resource-group myResourceGroup --name myAKSCluster --query "agentPoolProfiles[].{Name:name,Mode:mode,Count:count}" --output table以下示例输出显示 nodepool1 是包含三个节点的系统节点池:
Name Mode Count --------- ------ ------- nodepool1 System 3使用
az aks scale命令缩放群集节点。 以下示例将名为 myAKSCluster 的群集中的 nodepool1 缩放为两个节点:az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 2 --nodepool-name nodepool1 --query "agentPoolProfiles[?name=='nodepool1'].{Name:name,Mode:mode,Count:count}" --output table以下示例输出显示系统节点池已成功缩放到两个节点:
Name Mode Count --------- ------ ------- nodepool1 System 2系统节点池必须至少有两个节点。 对于生产群集,请在系统节点池中使用至少三个节点。 有关详细信息,请参阅 系统和用户节点池。
将用户节点池缩放为 0
与始终需要运行节点的系统节点池不同,用户节点池可以扩展到 0。 若要详细了解系统节点池和用户节点池之间的差异,请参阅 系统节点池和用户节点池。
重要
若要将用户节点池缩放为 0 个节点,请禁用群集自动缩放程序。 有关详细信息,请参阅在节点池上禁用群集自动缩放程序。
- Azure CLI
- Azure PowerShell
若要将用户节点池缩放为 0,请使用 az aks nodepool scale 而不是 az aks scale 用于常规节点缩放的命令,并设置为 --node-count0。
az aks nodepool scale --name <your node pool name> --cluster-name myAKSCluster --resource-group myResourceGroup --node-count 0
通过将群集自动缩放程序的参数设置为0--min-count,可以允许(但不能强制)自动缩放到自动缩放用户节点池上的零个节点。
后续步骤
在本文中,你手动缩放了 AKS 群集以增加或减少节点数量。 还可以使用群集自动缩放程序自动缩放群集。