Skip to content

Node Pools

Node pools are the core workload isolation and lifecycle boundary in AKS. Treat them as operational contracts, not just groups of VMs.

Main Content

graph TD
    A[Cluster] --> B[System Pool]
    A --> C[User Pool - General]
    A --> D[User Pool - GPU]
    A --> E[User Pool - Spot]
    C --> F[Business Workloads]
    D --> G[Specialized Jobs]
    E --> H[Interruptible Capacity]

Design principles

  • Keep at least one dedicated system node pool for critical add-ons.
  • Use user pools for application workloads and isolate by workload class when needed.
  • Use taints and tolerations intentionally; don't rely only on node labels.
  • Match VM family to workload profile instead of making every app share one pool.

Common operations

az aks nodepool add     --resource-group $RG     --cluster-name $CLUSTER_NAME     --name user01     --mode User     --node-count 3     --node-vm-size Standard_D4ds_v5
kubectl get nodes --show-labels
kubectl describe node <node-name>

Decision points

  • Linux-only or mixed Linux/Windows cluster.
  • General-purpose vs memory-optimized vs compute-optimized pools.
  • Spot pools for interruptible work.
  • Autoscaler enabled or fixed-capacity pools.

See Also

Sources