Node Pools

What Are AKS Node Pools?

In Azure Kubernetes Service (AKS), a node pool is a scalable pool of VMs that serve as the compute infrastructure for running containerised workloads. Each node in a pool is an Azure VMSS, and all nodes in a given pool share the same configuration (e.g. VM size, OS type).

There are two main types of node pools:

  • System node pools: These host critical system components like CoreDNS and kube-proxy. They must have at least one node and are required for the cluster to function. The system node pool can be used to run user workloads if necessary, but it is typically reserved for system services to ensure they have dedicated resources.
  • User node pools: These are intended for running your application workloads. You can have multiple user node pools to support different workload types or configurations.

How Are Node Pools Used?

Node pools allow you to:

  • Isolate workloads: For example, you can run production and development workloads on separate pools, on separate subnets and with separate permissions.
  • Use different OS types: You can mix Linux and Windows node pools in the same cluster.
  • Scale independently: Each node pool can scale up or down based on demand using the Cluster Autoscaler.
  • Apply different VM SKUs: You can optimise cost and performance by selecting appropriate VM sizes for each pool.

AKS uses Virtual Machine Scale Sets (VMSS) as the underlying infrastructure for node pools, enabling autoscaling and high availability.

VM SKUs in Node Pools

When you create a node pool, you specify the VM size (SKU) for the nodes. This determines the compute, memory, and storage capacity available to your workloads. This selection determines the SKU of the Virtual Machine Scale Set (VMSS) that backs the node pool, and all nodes in the pool will use the same VM size.

If you need different VM sizes for different workloads, you can create multiple node pools with different SKUs. For example, you might have a pool with Standard_D2s_v5 VMs for general workloads and another pool with Standard_E4s_v5 VMs for memory-intensive applications.

Specialized Node Pools

Specialized node pools in Azure Kubernetes Service (AKS) allow you to tailor your cluster to meet specific workload requirements. These node pools can be configured with different VM types, operating systems, and capabilities to optimise for performance, cost, or hardware features.

TypeDescription
GPU Node PoolsIdeal for machine learning, AI, and graphics-intensive workloads. Use VM sizes like Standard_NC6 or Standard_ND40rs_v2.
Spot Node PoolsUse Azure Spot VMs for cost-effective, interruptible workloads. Often combined with on-demand VMs for resiliency.
Ephemeral OS Disk PoolsUse ephemeral disks for stateless workloads to improve performance and reduce costs.
Windows Node PoolsRun Windows-based containers. Must be in separate pools from Linux nodes.
ARM64 Node PoolsUse ARM-based VMs (e.g., Dpsv5, Dplsv5, Epsv5) for cost-effective, power-efficient workloads. Can be mixed with x64 pools in the same cluster.

Node Pool Scaling in AKS

AKS supports both manual and automatic scaling of node pools to match workload demands and optimise resource usage.

Manual Scaling

You can manually scale a node pool by increasing or decreasing the number of nodes via the Azure Portal or CLI.

Cluster Autoscaler

The Cluster Autoscaler automatically adjusts the number of nodes in a pool based on pending pods and resource requests. Key features:

  • Scales up when pods are unschedulable
  • Scales down when nodes are underutilised
  • Customisable profiles for bursty or cost-sensitive workloads

Node Auto-Provisioner

Node Auto-Provisioner (NAP) is based on the Karpenter project and dynamically provisions new node pools based on workload requirements:

  • Supports multiple VM SKU families and architectures (e.g., ARM64 and AMD64)
  • Enables efficient bin-packing and cost optimisation
  • Automatically selects the best-fit VM size and type
Info

The Node Auto-Provisioner is currently in preview and may not be available in all regions or subscriptions.