Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article describes OS versions available for Azure Kubernetes Service (AKS) nodes, and best practices for testing and upgrading your OS version.
Caution
In this article, there are references to Ubuntu OS versions that are being deprecated for AKS:
Starting on 17 June 2025, AKS will no longer support Ubuntu 18.04. Existing node images will be deleted and AKS will no longer provide security updates. You'll no longer be able to scale your node pools. Migrate to a supported Ubuntu version by upgrading your node pools to a supported Kubernetes version. For more information on this retirement, see Retirement: Ubuntu 18.04 node pools on AKS.
Starting on 17 March 2027, AKS will no longer support Ubuntu 20.04. Existing node images will be deleted and AKS will no longer provide security updates. You'll no longer be able to scale your node pools. Migrate to a supported Ubuntu version by upgrading your node pools to Kubernetes version 1.34+. For more information on this retirement, see Retirement: Ubuntu 20.04 node pools on AKS.
Important
Starting on 30 November 2025, AKS will no longer support or provide security updates for Azure Linux 2.0. Starting on 31 March 2026, node images will be removed, and you'll be unable to scale your node pools. Migrate to a supported Azure Linux version by upgrading your node pools to a supported Kubernetes version or migrating to osSku AzureLinux3
. For more information, see Retirement: Azure Linux 2.0 node pools on AKS.
Supported OS versions
Each node image corresponds to an OS version, which you can specify using OS SKU. You can specify the following parameters when creating clusters and node pools:
- --os-type: OS type, including Linux or Windows. You can't specify the Windows OS type during cluster creation or update.
- --os-sku: Used to specify OS version or OS variant. You can't specify the Windows OS SKU during cluster creation or update. For more information for supported OS SKU options, see Azure AKS CLI or API.
- --kubernetes-version: Version of Kubernetes to use for creating the node pool or cluster.
Best practice guidance
The default OS version is the most recent validated version.
- For Ubuntu, we recommend creating clusters and node pools while specifying
--os-type Linux
and--os-sku Ubuntu
. This will automatically update you to the latest default Ubuntu version based on your Kubernetes version.- For Azure Linux, we recommend creating clusters and node pools while specifying
--os-type Linux
and--os-sku AzureLinux
. This will automatically update you to the latest default Azure Linux version based on your Kubernetes version.- For Windows, we recommend creating node pools while specifying
--os-type Windows
and--os-sku Windows2022
. You need to manually update node pools to the next OS version when it's released.
OS type | OS SKU | Supported Kubernetes versions | Default versioning |
---|---|---|---|
Linux | Ubuntu | This OS SKU is supported in all Kubernetes versions. | OS version for this OS SKU changes based on your Kubernetes version. Ubuntu 22.04 is default for Kubernetes version 1.25 to 1.32. |
Linux | Ubuntu2404 | This OS SKU will only be supported in Kubernetes 1.32 to 1.38. | Ubuntu 24.04 is available in preview with Kubernetes 1.32+ using --os-sku Ubuntu2404 . We recommend this OS SKU if you want to test out the new OS version without upgrading your Kubernetes version. |
Linux | Ubuntu2204 | This OS SKU is supported in Kubernetes version 1.25 to 1.33. | Ubuntu 22.04 is currently default when using --os-sku Ubuntu . We recommend this OS SKU if you need to roll back to Ubuntu 22.04 after testing Ubuntu 24.04. |
Linux | AzureLinux | This OS SKU is supported in all Kubernetes versions. | OS version for this OS SKU changes based on your Kubernetes version. Azure Linux 2.0 is default for Kubernetes version 1.27 to 1.31. Azure Linux 3.0 is default for Kubernetes version 1.32+. When the AzureLinuxV3Preview feature flag is enabled on AKS 1.31, --os-sku AzureLinux defaults to 3.0. |
Linux | AzureLinux3 | This OS SKU is supported in Kubernetes 1.28 to 1.36. | We recommend this OS SKU if you want to test out the new OS version without upgrading your Kubernetes version. You can also use this OS SKU to migrate from Azure Linux 2.0 to Azure Linux 3.0. |
Windows | Windows2019 | 1.14-1.32 | Default for Windows OS Type in Kubernetes version 1.14 to 1.24. |
Windows | Windows2022 | 1.23 to 1.34 | Default for Windows OS Type in Kubernetes version 1.25 to 1.33. |
Migrate to a new OS version
When a new OS version releases on AKS, it's supported in preview before it becomes generally available and default. We recommend testing your nonproduction workloads with the new OS version when it becomes available in preview. In order to access preview functions, make sure you have the preview extension installed. You can install the extension using the az extension add --name aks-preview
command.
Update OS SKU on an existing node pool
Update the os-sku
on an existing node pool using the az aks nodepool update
command. In cases where there's a new OS version available in preview, this functionality allows you to migrate your node pool to the new OS version without needing to upgrade your Kubernetes version.
Note
The following values aren't supported for node pool update command:
--os-sku Windows2019
--os-sku Windows2022
Instead, you need to create a cluster or add node pools to your cluster with the corresponding --os-sku
you intend to use.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--os-type Linux \
--os-sku Ubuntu \
--name $NODE_POOL_NAME \
--node-count 1
You can use the az aks nodepool update
command to migrate between any supported Linux os-sku
. The command might fail if the target OS doesn't have a supported node image for your Kubernetes version, VM size, or FIPS enablement.
Migrate to Ubuntu 24.04 (preview)
Ubuntu 24.04 is available in preview by specifying --os-sku Ubuntu2404
.
Note
Keep the following information in mind when migrating to --os-sku Ubuntu2404
:
--os-sku Ubuntu2404
doesn't support FIPS.
- Ubuntu 24.04 will be supported in Kubernetes versions 1.32 to 1.38.
- You need to update your OS SKU to a supported OS option before upgrading your Kubernetes version to 1.39+.
--os-sku Ubuntu2404
is an option and is intended for testing the new OS Linux version without requiring you to upgrade your Kubernetes version.- You need the Azure CLI version 18.0.0b5 or later installed and configured. To find your CLI version, run
az --version
. If you need to install or upgrade, see Install Azure CLI.
Install aks-preview
extension
Install the
aks-preview
Azure CLI extension using theaz extension add
command.Important
AKS preview features are available on a self-service, opt-in basis. Previews are provided "as is" and "as available," and they're excluded from the service-level agreements and limited warranty. AKS previews are partially covered by customer support on a best-effort basis. As such, these features aren't meant for production use. For more information, see the following support articles:
az extension add --name aks-preview
Update to the latest version of the extension using the
az extension update
command. Ubuntu 24.04 requires a minimum of 18.0.0b5.az extension update --name aks-preview
Register Ubuntu2404Preview
feature flag
Register the
Ubuntu2404Preview
feature flag using theaz feature register
command.az feature register --namespace "Microsoft.ContainerService" --name "Ubuntu2404Preview"
Verify the registration status using the
az feature show
command. It takes a few minutes for the status to show Registered.az feature show --namespace Microsoft.ContainerService --name Ubuntu2404Preview
When the status reflects Registered, refresh the registration of the Microsoft.ContainerService resource provider using the
az provider register
command.az provider register --namespace Microsoft.ContainerService
Update your node pool to use Ubuntu 24.04
Update to --os-sku Ubuntu2404
on an existing node pool using the az aks nodepool update
command.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--os-type Linux \
--os-sku Ubuntu2404 \
--kubernetes-version 1.32.0 \
--name $NODE_POOL_NAME \
--node-count 1
Migrate to Azure Linux 3.0
Azure Linux 3.0 is the default for --os-sku AzureLinux
in Kubernetes versions 1.32-1.36. You can also use Azure Linux 3.0 by specifying --os-sku AzureLinux3
.
Note
Keep the following information in mind when migrating to --os-sku AzureLinux3
:
--os-sku AzureLinux3
is supported in Kubernetes versions 1.28 to 1.36.--os-sku AzureLinux3
is intended for migrating to Azure Linux 3.0 without upgrading your Kubernetes version. You need to update your OS SKU to a supported OS option before upgrading your Kubernetes version to 1.37+.- You need the Azure CLI version 18.0.0b36 or later for preview and version 2.78.0 or later for GA installed and configured. To find your CLI version, run
az --version
. If you need to install or upgrade, see Install Azure CLI.
Update your node pool to use Azure Linux 3.0
Update to --os-sku AzureLinux3
on an existing node pool using the az aks nodepool update
command.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--os-type Linux \
--os-sku AzureLinux3 \
--kubernetes-version 1.30.0 \
--name $NODE_POOL_NAME \
--node-count 1
Roll back your OS version
In Kubernetes versions where multiple OS versions are supported, you can use the az aks nodepool update
command to roll back to a previous OS version.
You might want to roll back your OS version in the following scenarios:
- If you're testing a new OS version and you run into any issues.
- Once you upgrade to a Kubernetes version that supports the new OS version as default, you might want to roll back to the default
Ubuntu
orAzureLinux
OS SKU. This allows you to get future OS versions as a part of your Kubernetes upgrades instead of requiring a node pool update.
Roll back your OS version to the default OS SKU
You can use the az aks nodepool update
command to update the os-sku
on an existing node pool. In cases where there's a previous OS version supported in your Kubernetes version, this functionality can allow you to roll back your OS version.
Note
The following values aren't supported for node pool update command:
--os-sku Windows2019
--os-sku Windows2022
OS SKU | Default OS version |
---|---|
Ubuntu | When you have OS SKU Ubuntu , Ubuntu 22.04 is the default OS version if your Kubernetes version is 1.25-1.34. Ubuntu 24.04 is the default for Ubuntu in Kubernetes 1.35-1.37. |
AzureLinux | When you have OS SKU AzureLinux , Azure Linux 2.0 is the default for AzureLinux in Kubernetes 1.26-1.31. Azure Linux 3.0 is the default for AzureLinux in Kubernetes 1.32-1.36. |
Update your OS SKU to Ubuntu on an existing node pool
When updating your node pool to use OS SKU Ubuntu
, you'll get the default OS version based on your Kubernetes version. This might trigger an automatic reimage if the OS version changes during the node pool update command.
Update to --os-sku Ubuntu
on an existing node pool using the az aks nodepool update
command.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--os-type Linux \
--os-sku Ubuntu \
--name $NODE_POOL_NAME \
--node-count 1
You can use the az aks nodepool update
command to migrate between any supported Linux os-sku
. The command might fail if the target OS doesn't have a supported node image for your Kubernetes version, VM size, or FIPS enablement.
Update your OS SKU to Azure Linux on an existing node pool
When updating your node pool to use OS SKU AzureLinux
, you'll get the default OS version based on your Kubernetes version. This might trigger an automatic reimage if the OS version changes during the node pool update command.
Update to --os-sku AzureLinux
on an existing node pool using the az aks nodepool update
command.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--os-type Linux \
--os-sku AzureLinux \
--name $NODE_POOL_NAME \
--node-count 1
Roll back to Ubuntu 22.04
Note
Keep the following information in mind when migrating to --os-sku Ubuntu2404
:
--os-sku Ubuntu2204
doesn't support FIPS.
- Ubuntu 24.04 is supported in Kubernetes versions 1.25 to 1.33.
--os-sku Ubuntu2204
is intended for roll back to Ubuntu 22.04 on your current Kubernetes version. You need to update your OS SKU to a supported OS option to upgrade your Kubernetes version to 1.34+.
Roll back to --os-sku Ubuntu2204
on an existing node pool using the az aks nodepool update
command.
az aks nodepool update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Linux \
--os-sku Ubuntu2204 \
--kubernetes-version 1.32.0 \
--name $NODE_POOL_NAME \
--node-count 1
Next steps
To learn more about node images, node pool upgrades, and node configurations on AKS, see the following resources:
- To learn about nodes and node configurations, see AKS core concepts.
- Configure automatic node image upgrades and schedule them using planned maintenance.
- Apply custom node configurations to modify OS or kubelet settings.
- For information about the latest node images, see the AKS release notes.
- Automatically apply cluster and node pool upgrades with GitHub Actions.