排查 AKS 升级错误,因为版本倾斜、不兼容或缺乏支持

先决条件

本文需要 Azure CLI 2.67.0 或更高版本。 若要查找版本号,请运行 az --version。 如果必须安装或升级 Azure CLI,请参阅 如何安装 Azure CLI

有关升级过程的详细信息,请参阅升级选项和建议中的“升级 AKS 群集”部分 ,以及 Azure Kubernetes 服务 (AKS) 群集的建议

症状

尝试使用 Azure CLI 升级 AKS 群集时,将阻止升级作,并返回以下一个或多个错误消息。

错误消息 1:K8sVersionNotSupported

<ClusterName> 位于此区域不支持的版本 1.25.6 上。 请使用 [az aks get-versions] 该命令获取此区域中支持的版本列表。 有关详细信息,请参阅 Azure Kubernetes 服务(AKS)中支持的 Kubernetes 版本

错误消息 2:OperationNotAllowed

不允许将 Kubernetes 版本 1.24.9 升级到 1.26.6。 可用升级:[1.29.15 1.29.14 1.29.13 1.29.12 1.29.11 1.29.10 1.2 9.9 1.29.8 1.29.7 1.29.6 1.29.5 1.29.4 1.29.2 1.29.0]。 有关详细信息,请参阅 AKS 支持的 Kubernetes 版本 以获取版本详细信息。

错误消息 3:NodePoolMcVersionIncompatible

节点池版本 1.24.9 和控制平面版本 1.29.15 不兼容。 节点池的次要版本不能超过 3 个版本,而不能超过控制平面的版本。 节点池的次要版本为 24,控制平面为 29。 有关详细信息,请参阅 AKS 升级版本倾斜策略

原因

出于以下一个或多个原因,不允许升级:

  • 所选 Azure 区域中不再支持目标 Kubernetes 版本(例如 1.26 或 1.25)。

  • 升级期间不允许跳过次要版本(例如,从 1.24 开始)。x 到 1.26。x 或 1.27。x) 除非不支持当前版本。

  • 如果尝试仅升级控制平面和节点池(NodePoolMcVersionIncompatible),则会发生版本偏差。 在这种情况下,节点池版本在控制平面版本后面变为三个以上的次要版本。 此大小或更大的差距会导致错误。

若要详细了解这些错误,请参阅以下文章:

解决方案

步骤 1:验证当前版本和可用的升级路径

若要查看当前的 Kubernetes 版本和支持的升级目标,请运行以下命令:

az aks get-upgrades --resource-group <RG> --name <ClusterName> --output table

如果只有较新版本(如 1.29)。x、已列出和中间版本,例如 1.27。x,1.26。x 或 1.25。缺少 x,这表示这些版本在你的区域中已弃用。

步骤 2:尝试完全升级(控制平面和节点池一起)

由于版本倾斜策略规定控制平面在节点池之前不能超过三个次要版本,因此可能不允许单独进行控制平面升级。 相反,请同时升级控制平面和节点池:

az aks upgrade --resource-group <RG> --name <ClusterName> --kubernetes-version <available upgrade version> --yes

此方法确保满足以下条件:

  • 你符合版本倾斜策略。
  • 使用受支持的 Kubernetes 版本。
  • 你以协调的方式升级这两个组件。

其他提示

  • 使用以下命令始终验证区域中支持的版本:
az aks get-versions --location <region> --output table
  • 避免尝试升级到已弃用的版本。 在这种情况下,AKS 可能会强制立即跳到受支持的长期版本(例如,到版本 1.29)。

  • 如果 AKS 群集运行的是违反倾斜策略的过时 Kubernetes 版本,建议的最佳做法如下所示:

    • 创建新群集: 使用受支持的 Kubernetes 版本创建 AKS 群集。

    • 迁移工作负载: 若要确保工作负荷在受支持的版本上运行,请将它们传输到新群集。

    • 避免跨多个版本升级: 迁移到新群集,而不是通过多个次要版本进行升级,以最大程度地降低复杂性并避免潜在问题。

    • 备份和验证数据: 确保在迁移之前备份和验证所有数据。

    • 全面测试: 若要识别和解决任何兼容性问题,请在过渡环境中执行彻底测试。

联系我们寻求帮助

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