群集自动缩放程序无法缩放并出现“无法缩放群集自动缩放程序已启用节点池”错误

本文讨论了在缩放启用了自动调节器的节点池的集群时,出现的“无法缩放启用自动调节器的节点池”错误的解决方法。

现象

收到类似于以下消息的错误消息:

kubectl get nodes 输出“找不到资源”
所有 Pod 状态为 Pending
缩放操作失败,并出现“无法缩放群集自动缩放程序启用节点池”错误

故障排除清单

Azure Kubernetes 服务(AKS)使用基于虚拟机规模集的代理池,其中包含群集节点和 群集自动缩放功能 (如果已启用)。

检查群集虚拟机规模集是否存在

  1. 登录到 Azure 门户

  2. 通过搜索以下名称查找节点资源组:

    • 默认名称 MC_{AksResourceGroupName}_{YourAksClusterName}_{AksResourceLocation}
    • 自定义名称(如果在创建时提供)。

    注意

    当你创建新群集时,AKS 会自动创建第二个资源组来存储 AKS 资源。 有关详细信息,请参阅为什么使用 AKS 创建两个资源组?

  3. 检查资源列表,并确保有虚拟机缩放集。

原因 1:删除了群集虚拟机规模集

删除附加到群集的虚拟机规模集会导致群集自动缩放程序失败。 它还会导致预配资源(如节点和 Pod)时出现问题。

注意

修改 AKS 群集中节点资源组下的任何资源是不支持的操作,并且会导致群集操作失败。 可以通过阻止用户修改由 AKS 管理的资源来阻止对节点资源组进行更改。

对齐节点池

如果意外删除群集虚拟机规模集,则可以使用 az aks nodepool update 重新协调节点池。

# Update Node Pool Configuration
az aks nodepool update --resource-group <resource-group-name> --cluster-name <cluster-name> --name <nodepool-name> --tags <tags> --node-taints <taints> --labels <labels>

# Verify the Update
az aks nodepool show --resource-group <resource-group-name> --cluster-name <cluster-name> --name <nodepool-name>

监视节点池,确保其按预期运行,并且所有节点都正常运行。

原因 2:已从节点资源组修改标记或任何其他属性

如果修改或删除节点资源组中的 Azure 创建的标记和其他资源属性,可能会收到缩放错误。 有关详细信息,请参阅 是否可以修改节点资源组中 AKS 资源的标记和其他属性?

对齐节点资源组标签

使用 Azure CLI 确保节点资源组具有正确的 AKS 名称和 AKS 组名称的标记:

# Add or update tags for AKS name and AKS group name
az group update --name <node-resource-group-name> --set tags.AKS-Managed-Cluster-Name=<aks-managed-cluster-name> tags.AKS-Managed-Cluster-RG=<aks-managed-cluster-rg>

# Verify the tags
az group show --name <node-resource-group-name> --query "tags"

监视资源组,确保正确应用标记,并确保资源组按预期运行。

原因 3:群集节点资源组已删除

删除群集节点资源组会导致在预配群集所需的基础结构资源时出现问题,这会导致群集自动缩放程序失败。

解决方案:在不更改配置的情况下将群集更新到目标状态

若要解决此问题,可以运行以下命令来恢复已删除的虚拟机规模集或任何标记(缺失或修改):

注意

手术完成可能需要几分钟时间。

在运行命令之前,为 AKS 群集资源组和群集名称设置环境变量。 包括一个随机后缀,以防止在可重复执行期间发生名称冲突,但必须确保资源组和群集存在。

export RANDOM_SUFFIX=$(head -c 3 /dev/urandom | xxd -p)
export AKS_RG_NAME="MyAksResourceGroup$RANDOM_SUFFIX"
export AKS_CLUSTER_NAME="MyAksCluster$RANDOM_SUFFIX"
az aks update --resource-group $AKS_RG_NAME --name $AKS_CLUSTER_NAME --no-wait

联系我们寻求帮助

如果有疑问,可以询问 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区