|
| 1 | +--- |
| 2 | +title: AKS upgrade not allowed or blocked due to unsupported Kubernetes version or node pool version skew |
| 3 | +description: Learn how to troubleshoot AKS upgrade not allowed or blocked due to unsupported Kubernetes version or node pool version skew. |
| 4 | +ms.date: 08/20/2025 |
| 5 | +editor: v-jsitser |
| 6 | +ms.reviewer: v-liuamson |
| 7 | +ms.service: azure-kubernetes-service |
| 8 | +#Customer intent: As an Azure Kubernetes user, I want to troubleshoot AKS upgrade not allowed or blocked due to unsupported Kubernetes version or node pool version skew so that I can successfully upgrade an AKS cluster by using the Azure CLI. |
| 9 | +ms.custom: sap:Create, Upgrade, Scale and Delete operations (cluster or nodepool) |
| 10 | +--- |
| 11 | +# AKS upgrade not allowed or blocked due to unsupported Kubernetes version or node pool version skew |
| 12 | + |
| 13 | +## Prerequisites |
| 14 | + |
| 15 | +This article requires Azure CLI version 2.67.0 or a later version. |
| 16 | +To find the version number, run `az --version`. If you have to install or |
| 17 | +upgrade Azure CLI, see [How to install the Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli). |
| 18 | + |
| 19 | +For more detailed information about the upgrade process, see the "Upgrade an AKS cluster" section in |
| 20 | +[Upgrade an Azure Kubernetes Service (AKS) cluster](https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster#upgrade-an-aks-cluster). |
| 21 | + |
| 22 | +## Symptoms |
| 23 | + |
| 24 | +When attempting to upgrade an AKS cluster using the Azure CLI, the upgrade operation is blocked with one or more of the following errors: |
| 25 | + |
| 26 | +**K8sVersionNotSupported:** Managed cluster `<ClusterName>` is on version 1.25.6 which is not supported in this region. |
| 27 | +Please use the `[azaks get-versions]` command to get the supported version list in this region. |
| 28 | +For more information, see [Supported Kubernetes versions in Azure Kubernetes Service (AKS)](https://aka.ms/supported-version-list). |
| 29 | + |
| 30 | +Or |
| 31 | + |
| 32 | +**OperationNotAllowed:** Upgrading Kubernetes version 1.24.9 to 1.26.6 |
| 33 | +is not allowed. Available upgrades: [1.29.15 1.29.14 1.29.13 1.29.12 |
| 34 | +1.29.11 1.29.10 1.29.9 1.29.8 1.29.7 1.29.6 1.29.5 1.29.4 1.29.2 |
| 35 | +1.29.0]. For more information, see [AKS supported Kubernetes versions](https://aka.ms/aks-supported-k8s-ver) for version |
| 36 | +details. |
| 37 | + |
| 38 | +Or |
| 39 | + |
| 40 | +**NodePoolMcVersionIncompatible:** Node pool version 1.24.9 and control |
| 41 | +plane version 1.29.15 is incompatible. Minor version of node pool cannot |
| 42 | +be more than 3 versions less than control plane's version. Minor |
| 43 | +version of node pool is 24 and control plane is 29. For more information, see |
| 44 | +[AKS upgrade version skew policy](https://aka.ms/aks/UpgradeVersionRules). |
| 45 | + |
| 46 | +## Cause |
| 47 | + |
| 48 | +The upgrade is not allowed due to one or more of the following reasons: |
| 49 | + |
| 50 | +- The target Kubernetes version (e.g., 1.25 or 1.26) is no longer supported in the selected Azure region. |
| 51 | + |
| 52 | +- Skipping minor versions during upgrades (e.g., from 1.24.x to 1.26.x or 1.27.x) is not allowed unless the current version is unsupported. |
| 53 | + |
| 54 | +- A control plane and node pool version skew (**NodePoolMcVersionIncompatible**) occurred when attempting to |
| 55 | + upgrade only the control plane while the nodepool version is too far behind causing a big gap such that the |
| 56 | + node pool version is more than three minor versions behind the control plane version. |
| 57 | + |
| 58 | +To understand more about these errors, you can refer to following articles: |
| 59 | + |
| 60 | +- [AKS supported Kubernetes versions](https://aka.ms/aks-supported-k8s-ver) |
| 61 | +- [AKS upgrade version skew policy](https://aka.ms/aks/UpgradeVersionRules) |
| 62 | + |
| 63 | +## Solution |
| 64 | + |
| 65 | +### Step 1: Confirm the current version and available upgrade paths |
| 66 | + |
| 67 | +Run the following command to view the current Kubernetes version and supported upgrade targets: |
| 68 | + |
| 69 | +```azurecli |
| 70 | +az aks get-upgrades --resource-group <RG> --name <ClusterName> --output table` |
| 71 | +``` |
| 72 | + |
| 73 | +If only newer versions such as 1.29.x are listed, and intermediate versions like 1.25.x, 1.26.x, or 1.27.x are missing, this indicates that |
| 74 | +those versions are deprecated in your region. |
| 75 | + |
| 76 | +### Step 2: Attempt full upgrade (control plane and node pool together) |
| 77 | + |
| 78 | +Due to the version skew policy (**control planes cannot be more than three minor versions ahead of node pools**), |
| 79 | +a separate control-plane-only upgrade may not be allowed. Instead, upgrade both the control plane and node pool together: |
| 80 | + |
| 81 | +```azurecli |
| 82 | +az aks upgrade --resource-group <RG> --name <ClusterName> |
| 83 | +--kubernetes-version <available upgrade version> --yes |
| 84 | +``` |
| 85 | + |
| 86 | +This will ensure compliance with the version skew policy, use of a supported Kubernetes version and upgrade of both components in a |
| 87 | +coordinated manner. |
| 88 | + |
| 89 | +### Additional Tips |
| 90 | + |
| 91 | +- Always validate supported versions in your region using: |
| 92 | + |
| 93 | +```azurecli |
| 94 | +az aks get-versions --location <region> --output table |
| 95 | +``` |
| 96 | + |
| 97 | +- Avoid attempting to upgrade to deprecated versions. AKS may enforce immediate skips to supported long-term versions (e.g., 1.29). |
| 98 | + |
| 99 | +- **For AKS clusters running significantly outdated Kubernetes versions**, the recommended best practices include following: |
| 100 | + |
| 101 | + - **Create a New Cluster:** Spin up a new AKS cluster with a supported |
| 102 | + Kubernetes version. |
| 103 | + |
| 104 | + - **Migrate Workloads:** Transfer your workloads to the new cluster to |
| 105 | + ensure they run on supported versions. |
| 106 | + |
| 107 | + - **Avoid Upgrading Across Multiple Versions:** Instead of upgrading |
| 108 | + through several minor versions, moving to a new cluster minimizes |
| 109 | + complexity and potential issues. |
| 110 | + |
| 111 | + - **Backup and Validate Data:** Ensure all data is backed up and validated |
| 112 | + before migration. |
| 113 | + |
| 114 | + - **Test Thoroughly:** Perform thorough testing in a staging environment |
| 115 | + to identify and resolve any compatibility issues. |
| 116 | + |
| 117 | +[!INCLUDE [azure-help-support](../../../includes/azure-help-support.md)] |
0 commit comments