Upgrade operating system (OS) versions in AKS

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 AKS GitHub Issues.
  • 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 AKS GitHub Issues.

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. Windows OS type can't be specified during cluster creation or update.
  • --os-sku: Used to specify OS version or OS variant. Windows OS SKU can't be specified during cluster creation or update.
  • --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 is supported in kubernetes 1.32 to 1.38. Ubuntu 24.04 is available in preview with K8s 1.32+ using --os-sku Ubuntu2404. This OS SKU is recommended 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. This OS SKU is recommended if you need to roll back to Ubuntu 22.04 after testing Ubuntu 24.04.
Linux Azure Linux 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+.
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.

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.

Update OS SKU on an existing node pool

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 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.

Limitations

  • --os-sku Windows2019 isn't a valid os-sku for node pool update command.
  • --os-sku Windows2022 isn't a valid os-sku for node pool update command.

Update os-sku using the az aks nodepool update command:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --os-type Linux \
    --os-sku Ubuntu \
    --name npwin \
    --node-count 1

The az aks nodepool update command can be used to migrate between any supported Linux os-sku. The command may fail if the target OS does not have a supported node image for your kubernetes version, vm size, or FIPS enablement.

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.

For example, if you encounter issues while using Ubuntu 24.04, then you can update your node pool os-sku to specify Ubuntu 22.04 to resolve issues while maintaining workload availability.

Roll back your OS version on an existing node pool

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 you OS version.

Limitations

  • --os-sku Windows2019 isn't a valid os-sku for node pool update command.
  • --os-sku Windows2022 isn't a valid os-sku for node pool update command.

Update os-sku using the az aks nodepool update command:

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --os-type Linux \
    --os-sku Ubuntu2204 \
    --name npwin \
    --node-count 1

The az aks nodepool update command can be used to migrate between any supported Linux os-sku. The command may fail if the target OS does not have a supported node image for your kubernetes version, vm size, or FIPS enablement.

Next steps

To learn more about node images, node pool upgrades, and node configurations on AKS, see the following resources: