本文討論如何解決「NodePoolMcVersionIncompatible - 節點集區 1.x.y 版和控制平面 1.a.b 版不相容」錯誤,當您升級 Microsoft Azure Kubernetes Service (AKS) 叢集中的節點集區時所發生的錯誤。
先決條件
癥狀
當您升級 AKS 叢集中的節點集區時,您會收到下列其中一個錯誤訊息:
BadRequest - NodePoolMcVersion不相容
錯誤:節點集區 1.x.y 版和控制平面 1.a.b 版不相容。 節點集區的次要版本不得比控制平面的版本低超過 2 個版本。 節點集區的次要版本為 x,而控制平面為 。 如需詳細資訊,請參閱 https://aka.ms/version-skew-policy。
資源標識符:/subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>。
BadRequest - NodePoolMcVersion不相容
錯誤:節點集區 1.x.y 版和控制平面 1.a.b 版不相容。 節點集區版本 x 的次要版本大於控制平面版本 a。 如需詳細資訊,請參閱 https://aka.ms/version-skew-policy。
資源標識符:/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 意見反應社群提交產品意見反應。