Edit

Share via


Use Arm-based processor (Arm64) Virtual Machines (VMs) in an Azure Kubernetes Service (AKS) cluster for cost effectiveness

Arm-based processors (Arm64) are power-efficient and cost-effective, but don't compromise on performance. These Arm64 VMs are engineered to efficiently run dynamic, scalable workloads and can deliver up to 50% better price-performance than comparable x86-based VMs for scale-out workloads.

Because of their ability to scale workloads efficiently, Arm64 VMs are well-suited for web or application servers, open-source databases, cloud-native applications, gaming servers, and other high traffic applications.

Note

While a combination of CPU, memory, and networking capacity configurations heavily influences the cost effectiveness of a SKU, Arm64 VM types are recommended for cost optimization.

In this article, you'll learn how to add a Arm64 VM to an existing node pool.

Prerequisites

Before you begin, make sure you have:

  • An existing AKS cluster.
  • The Dpsv5, Dplsv5, or Epsv5 series SKUs available for your subscription.

Limitations

  • Arm64 VMs aren't supported for Windows node pools.
  • Existing node pools can't be updated to use an Arm64 VM.
  • Federal Information Process Standard (FIPS)-enabled node pools are only supported with Arm64 SKUs when using Azure Linux 3.0+.
  • Arm64 node pools aren't supported on Defender-enabled clusters with Kubernetes version 1.29.0 or lower.

Create node pools with Arm64 VMs

The Arm64 processor provides low power compute for your Kubernetes workloads. Arm64 virtual machines can be added to existing clusters even mixing Intel and Arm architecture node pools within a cluster. To create an Arm64 node pool, you need to choose a Dpsv5, Dplsv5, or Epsv5 series virtual machine.

Add a node pool with an Arm64 VM

Use az aks nodepool add to add a node pool with an Arm64 VM to an existing cluster. Alternatively, if you're using Azure Linux 3.0+, you can add a node pool with an Arm64 VM and FIPS enabled.

  • Add a node pool with an Arm64 VM

        az aks nodepool add \
            --resource-group $RESOURCE_GROUP_NAME \
            --cluster-name $CLUSTER_NAME \
            --name $ARM_NODE_POOL_NAME \
            --node-count 3 \
            --node-vm-size Standard_D2pds_v5
    
  • Add a FIPS-enabled node pool with an Arm64 VM

    Limitations:

    • Node pools with Arm64 VMs and FIPS enabled aren't supported with Ubuntu OS.
    • Node pools with Arm64 VMs and FIPS require kubernetes version 1.31+.

    Use the az aks nodepool add with --enable-fips-image and --os-sku parameters.

        az aks nodepool add \
           --resource-group $RESOURCE_GROUP_NAME \
           --cluster-name $CLUSTER_NAME \
           --name $ARM_NODE_POOL_NAME \
           --os-sku AzureLinux
           --enable-fips-image
           --kubernetes-version 1.31
           --node-count 3 \
           --node-vm-size Standard_D2pds_v5
    

    For more information on verifying FIPS enablement and disabling FIPS, see Enable FIPS node pools.

  • Update a node pool with an Arm64 VM to enable FIPS

    Limitations:

    • Node pools with Arm64 VMs and FIPS enabled aren't supported with Ubuntu OS.
    • Node pools with Arm64 VMs and FIPS require kubernetes version 1.31+.

    Use az aks nodepool update command with the --enable-fips-image parameter to enable FIPS on an existing node pool.

        az aks nodepool update \
           --resource-group myResourceGroup \
           --cluster-name myAKSCluster \
           --name np \
           --enable-fips-image
    

    This command triggers a reimage of the node pool immediately to deploy the FIPS compliant Operating System. This reimage occurs during the node pool update. No extra steps are required.

For more information on verifying FIPS enablement and disabling FIPS, see Enable FIPS node pools.

Verify the node pool uses Arm64

Verify a node pool uses Arm64 using the az aks nodepool show command and verify the vmSize is a Dpsv5, Dplsv5, or Epsv5 series.

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --query vmSize

The following example output shows the node pool uses Arm64:

 "Standard_D2pds_v5"

Next steps

In this article, you learned how to add a node pool with an Arm64 VM to an AKS cluster.