本文讨论如何解决“NodePoolMcVersionIncompatible - 节点池版本 1.x.y 和控制平面版本 1.a.b 不兼容”错误,在 Microsoft Azure Kubernetes 服务(AKS)群集中升级节点池时发生。
先决条件
症状
升级 AKS 群集中的节点池时,会收到以下错误消息之一:
BadRequest - NodePoolMcVersionIncompatible
错误:节点池版本 1.x.y 和控制平面版本 1.a.b 不兼容。 节点池的次要版本与控制平面的版本相比,不得低于2个版本。 节点池的次要版本为 x,控制平面为 a。 有关详细信息,请查看 https://aka.ms/version-skew-policy。
资源 ID:/subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>。
BadRequest - NodePoolMcVersionIncompatible
错误:节点池版本 1.x.y 和控制平面版本 1.a.b 不兼容。 节点池版本 x 的次要版本大于控制平面版本 a。 有关详细信息,请查看 https://aka.ms/version-skew-policy。
资源 ID:/subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>。
原因
如果尝试升级 AKS 控制平面版本后面的两个版本以上的节点池,或者尝试添加的版本比控制平面版本更高的节点池,则会出现这些问题。
升级节点池时,必须满足以下条件:
节点池的版本不能高于控制<主版本>.<次版本>.<补丁版本>。
节点池版本必须位于控制平面版本的两个 次要 版本中。
有关详细信息,请参阅 用于升级的 AKS 验证规则。
解决方案 1:确保节点池版本在控制平面版本的两个次要版本中
通过在 Azure CLI 中运行 az aks get-upgrades 命令来获取控制平面版本。
下面是命令的示例用法。
MasterVersion输出列包含控制平面版本。az aks get-upgrades --resource-group aksrg --name testcluster1 --output tableName ResourceGroup MasterVersion Upgrades ------- --------------- --------------- ----------------------- default aksrg 1.23.12 1.23.15, 1.24.6, 1.24.9通过运行 az aks nodepool upgrade Azure CLI 命令升级节点池,并提供一个 Kubernetes 版本,该版本位于控制平面版本的两个次要版本中。
例如,如果控制平面版本为
1.23.12,则可以将节点池的 Kubernetes 版本指定为1.23.8或1.23.12。下面是命令的示例用法:
az aks nodepool upgrade \ --resource-group aksrg \ --cluster-name testcluster1 \ --name mynodepool \ --kubernetes-version 1.23.8 \ --no-wait
解决方案 2:确保节点池版本不大于控制平面版本
通过在 Azure CLI 中运行 az aks get-upgrades 命令来获取控制平面版本。
下面是命令的示例用法。
MasterVersion输出列包含控制平面版本。az aks get-upgrades --resource-group aksrg --name testcluster1 --output tableName ResourceGroup MasterVersion Upgrades ------- --------------- --------------- ----------------------- default aksrg 1.23.12 1.23.15, 1.24.6, 1.24.9通过运行 az aks nodepool upgrade Azure CLI 命令升级节点池,并提供小于或等于控制平面版本的 Kubernetes 版本。
下面是命令的示例用法:
az aks nodepool upgrade \ --resource-group aksrg \ --cluster-name testcluster1 \ --name mynodepool \ --kubernetes-version 1.23.12 \ --no-wait
联系我们以获得帮助
如果有疑问,可以询问 Azure 社区支持。 您还可以向Azure反馈社区提交产品反馈。