Azure

AKS Node Pool Strategy: System/User/Spot/GPU/Windows Pools and Cost Optimization

2026-05-24
NicheeLab Editorial Team

An AKS Node Pool is a group of identically configured worker nodes. By running multiple node pools in a single AKS cluster, you can optimize each pool for a specific purpose. Node pool design has a major impact on AKS operational efficiency, cost, and performance. This article walks through System / User / Spot / GPU / Windows node pools, Cluster Autoscaler vs NAP, and operational best practices.

System Node Pool vs User Node Pool

ItemSystem Node PoolUser Node Pool
Purposekube-system namespace podsApplication pods
TaintCriticalAddonsOnly=true:NoScheduleCustomizable
RequiredYes (at least 1)Optional (multiple allowed)
OSLinux onlyLinux / Windows
Min nodes (production)3 (AZ-redundant)Depends on use case
Recommended VM sizeD2s_v5 / D4s_v5 or higherD / E / N series

The standard pattern for new AKS clusters is one System pool (D4s_v5 × 3 nodes, AZ-redundant) plus multiple User pools.

Spot Node Pool

Spot Node Pools use Azure Spot VMs as nodes, cutting costs by up to 90%.

Design Considerations

  • Spot nodes can be evicted at any time
  • Set a pod Toleration for kubernetes.azure.com/scalesetpriority=spot:NoSchedule
  • Use Node Selector or Node Affinity on kubernetes.azure.com/scalesetpriority=spot to intentionally schedule onto Spot
  • Use Delete (not Deallocate) as the Eviction Policy
  • Allowing Max Price up to the pay-as-you-go rate reduces eviction frequency

Use Cases

  • Batch processing pods (CronJob)
  • Stateless Worker
  • Ephemeral CI/CD pipeline pods
  • ML training jobs

Never use Spot for stateful production workloads (databases, caches). Only stateless, eviction-tolerant workloads belong here.

Cluster Autoscaler vs Node Auto Provisioning (NAP)

ItemCluster AutoscalerNode Auto Provisioning (NAP, 2024 GA)
CategoryAKS standard featureNew, Karpenter-based
BehaviorDetect Pending pods → launch nodesDynamically picks optimal VM size from pod requirements
Scale latency~10 minutes1-2 minutes
Node pool managementMust be pre-definedNot required (dynamic)
Cost efficiencyStandardMore optimized
RecommendationExisting operationsNew clusters / efficiency-focused

NAP is becoming the default choice for new AKS clusters, but since it's still a new feature, Cluster Autoscaler knowledge remains important.

GPU Node Pool

Node pool for machine learning, graphics processing, and LLM training. Uses Azure N-series VMs.

Recommended VM Series

  • NCv3: NVIDIA Tesla V100, ML training and inference
  • NDv4: NVIDIA A100 40GB, large-scale ML training
  • ND H100 v5: NVIDIA H100 80GB, latest-gen LLM training
  • NVadsA10 v5: NVIDIA A10, graphics and inference

Configuration Steps

  1. Install the NVIDIA Device Plugin (the Azure GPU Operator is also an option)
  2. On GPU-requesting pods, set resources.limits to nvidia.com/gpu: 1
  3. Explicitly schedule onto the GPU pool via Node Selector
  4. Use a Spot GPU pool for cost optimization (great for ML training)

ND H100 v5 (H100 80GB GPUs, latest generation) easily runs into the millions to tens of millions of yen per month, and a quota request is often required — plan capacity ahead of time.

Windows Node Pool

AKS supports Windows Node Pools alongside Linux ones (the System Node Pool must always be Linux).

Use Cases

  • Containerizing .NET Framework apps
  • MSI-based legacy applications
  • Apps that require Windows authentication (Kerberos)

Caveats

  • Windows container images are much larger than Linux (several GB), so pull times are longer
  • Pod startup is also slower than Linux
  • Windows and Linux must be in separate node pools (no mixing)
  • Target via Pod Node Selector kubernetes.io/os=windows

This feature shines for legacy Windows app containerization projects, but for new projects the standard best practice is to containerize on Linux.

Standard Production Node Pool Layout

Node PoolVM sizeMinMaxPurpose
SystemD4s_v535kube-system pods
User (Regular)D4s_v5310Production Web/API
User (Spot)D4s_v5 Spot020Batch workers
GPUNCsv305ML inference / training (as needed)
Memory OptimizedE16s_v505In-memory cache (as needed)

Using Taints and Tolerations

A mechanism to control app pod scheduling at the node pool level.

Common Taint Patterns

  • CriticalAddonsOnly=true:NoSchedule: dedicated to System Node Pools (kube-system only)
  • workload=batch:NoSchedule: dedicated to batch node pools
  • sku=gpu:NoSchedule: dedicated to GPU node pools
  • spot=true:PreferNoSchedule: prefer Spot pools (NoSchedule is hard, PreferNoSchedule is soft)

Example Pod-side Tolerations

tolerations:
  - key: "workload"
    operator: "Equal"
    value: "batch"
    effect: "NoSchedule"
nodeSelector:
  workload: batch

Node Pool Upgrade Strategy

  1. Surge Upgrade: spin up new nodes → migrate pods → delete old nodes, zero downtime
  2. Pod Disruption Budget (PDB): limit simultaneous evictions
  3. Roll upgrades pool by pool (no downtime for the cluster as a whole)
  4. Auto-upgrade Channel: automatic updates via stable / rapid / patch / node-image
  5. For Production, use stable Channel + Manual Approval
  6. Refresh Node Images regularly to pick up security patches

Operational Best Practices

  1. Make the System Node Pool AZ-redundant with at least 3 nodes
  2. Separate User Node Pools by purpose (Regular, Spot, GPU, Memory)
  3. Cluster Autoscaler or NAP for dynamic scaling
  4. Set appropriate resources.requests/limits on pods (so the autoscaler can make accurate decisions)
  5. Pod Disruption Budget for safe evictions
  6. Reserved Instances for the steady-state portion of Regular Node Pools
  7. Use Spot for partial cost savings + Regular for stability
  8. Monitor node security with Microsoft Defender for Containers
  9. Visualize node metrics with Azure Monitor for Containers
  10. Regularly review node pools and delete unused ones

Related Certifications

Frequently Asked Questions

What is an AKS Node Pool?

An AKS Node Pool is a group of identically configured worker nodes (Linux or Windows VMs). A single AKS cluster typically hosts multiple node pools, separated by purpose (System, User, GPU, Spot). The System Node Pool is mandatory and runs kube-system namespace pods (CoreDNS, konnectivity, metrics-server, etc.), while User Node Pools run application pods. Each node pool can be configured independently for VM size, OS, autoscaling, taints, and labels, and pod placement is controlled via Node Affinity / Tolerations. In enterprise AKS, node pool design has a major impact on operational efficiency, cost, and performance.

What is the difference between System and User Node Pools?

System Node Pool: runs kube-system pods (CoreDNS, konnectivity, metrics-server, azure-cni-pod, etc.) and handles AKS management functions. Taint: CriticalAddonsOnly=true:NoSchedule (excludes app pods). Minimum 1 node (3 recommended in production for AZ redundancy). Use Standard VMs (D2s_v5 or higher) rather than Burstable (B2s_v3). User Node Pool: runs application pods with customizable taints, can be created multiple times by purpose (Spot, GPU, Memory-optimized), scales via Cluster Autoscaler, and now supports Auto Provisioning (Karpenter equivalent). The standard pattern for new AKS clusters is one System pool (D4s_v5 × 3 nodes, AZ-redundant) plus multiple User pools.

How should I use Spot Node Pools?

Spot Node Pools use Azure Spot VMs as nodes, cutting costs by up to 90%. Design considerations: 1) Spot nodes can be evicted at any time — pods need a Toleration for 'kubernetes.azure.com/scalesetpriority=spot:NoSchedule'; 2) intentionally schedule onto Spot via Node Selector or Node Affinity on 'kubernetes.azure.com/scalesetpriority=spot'; 3) use Delete as the Eviction Policy (not Deallocate); 4) optionally allow Max Price up to the pay-as-you-go rate to reduce eviction frequency. Use cases: batch processing pods (CronJob), stateless workers, ephemeral CI/CD pods. Never use Spot for stateful production workloads (databases, caches) — only stateless, eviction-tolerant workloads belong here.

What is the difference between Cluster Autoscaler and Karpenter?

Cluster Autoscaler (CA): the standard AKS node autoscaler. It detects Pending pods (those that can't be scheduled due to resource shortage) → launches new nodes → schedules the pods, and removes idle nodes. Enabled per node pool with Min/Max node counts. Typical scale-up latency is around 10 minutes. Node Auto Provisioning (NAP, Karpenter-based, GA in 2024): dynamically picks the optimal VM size from pod requirements (CPU/Memory/Affinity) and creates nodes — faster (1–2 min), more efficient, and more cost-optimized. Multiple node pool management is no longer needed. Microsoft adapted the AWS Karpenter project codebase for Azure, and NAP is becoming the default choice for new AKS clusters. That said, NAP is still new, so Cluster Autoscaler knowledge remains important.

How do I configure a GPU Node Pool?

GPU Node Pools are used for machine learning, graphics processing, and crypto mining (only if your organization permits it). They use Azure N-series VMs (NCv3, NDv4, ND H100 v5, etc.) as nodes. Microsoft's recommended pattern: 1) install the NVIDIA Device Plugin (the Azure GPU Operator is also an option); 2) request GPUs on pods via resources.limits with nvidia.com/gpu: 1; 3) explicitly schedule onto the GPU pool via Node Selector; 4) use a Spot GPU pool for cost optimization (great for ML training). NDv5 (H100 80GB GPUs, latest generation) is extremely powerful for LLM training and can easily run into millions of yen per month. A quota request is often required, so plan capacity ahead of time.

Can I use Windows Node Pools?

AKS supports Windows Node Pools alongside Linux ones (the System Node Pool must always be Linux). Workers run on Windows Server 2019 / 2022 and let you containerize .NET Framework apps and MSI-based legacy applications. Caveats: 1) Windows container images are much larger than Linux (several GB), so pull times are longer; 2) pod startup is also slower than Linux; 3) Windows and Linux must be in separate node pools (no mixing); 4) target via Pod Node Selector kubernetes.io/os=windows. This feature shines for legacy Windows app containerization projects, but for new projects the standard best practice is to containerize on Linux.

What are the best practices for Node Pool design?

Standard pattern for production AKS: 1) one System Node Pool (D4s_v5 × 3 nodes, AZ-redundant, CriticalAddonsOnly taint); 2) User Node Pool (Regular): D4s_v5 × 3 nodes, autoscale Min 3 / Max 10, for production Web/API; 3) User Node Pool (Spot): D4s_v5 Spot, autoscale Min 0 / Max 20, for batch workers; 4) GPU Node Pool (when needed): NCsv3-series, autoscale Min 0 / Max 5; 5) Memory-Optimized Node Pool (when needed): E-series for in-memory cache. Roll upgrades pool by pool so the cluster as a whole has zero downtime. Combining AZ placement, Pod Disruption Budgets, and Cluster Autoscaler / NAP delivers both cost optimization and high availability.

What are the related certifications?

AZ-104 (Administrator) covers AKS basics in Domain 3; AZ-204 (Developer Associate, note the July 2026 retirement) covers AKS deployment from a developer perspective; AZ-400 (DevOps Engineer Expert) covers AKS deployment from CI/CD pipelines and GitOps (Argo CD / FluxCD); AZ-305 (Solutions Architect Expert) covers architectural decisions; SC-100 (Cybersecurity Architect Expert) covers AKS security. Outside Microsoft: combining CKA (Certified Kubernetes Administrator), CKAD (Application Developer), and CKS (Security) is a powerful pairing for DevOps engineers. AKS is a core technology on the Azure DevOps engineer career roadmap.

Related Articles & Technical Deep Dives

Azure Kubernetes Service (AKS) 入門ガイド|アーキテクチャ・Networking・Ingress・セキュリティ完全解説【2026 年版】

Azure Kubernetes Service (AKS) の入門ガイド。Control Plane と Node Pool の構造、Azure CNI Overlay vs Kubenet の選定、Application Gateway / NGINX Ingress 選定、Workload Identity (新方式)、Private Cluster・Microsoft Defender for Containers・Azure Policy のセキュリティ、関連認定試験 (AZ-104 / AZ-204 / AZ-400 / CKA) を日本語で網羅。

Azure Spot VM 詳細ガイド|Eviction Policy・Max Price・Placement Score・AKS Spot Node Pool【2026 年版】

Azure Spot VM の詳細ガイド。Eviction Policy (Deallocate / Delete) 選択・Max Price 戦略・Spot Placement Score・制約・AKS Spot Node Pool 構成・コスト効果・運用ベストプラクティス・関連認定試験 (AZ-104 / AZ-305 / AZ-400) を日本語で網羅。最大 90% コスト削減の実装パターン。

Azure DevOps エンジニア キャリアロードマップ|AZ-104 → AZ-400 → SC-100 シニア DevOps への道【2026 年版】

Azure DevOps Engineer になるための認定取得ロードマップ完全版。AZ-900 → AZ-104 → AZ-400 の王道ルート、GitHub と Azure DevOps の両方を扱う AZ-400 の構成、Kubernetes 認定 (CKA / CKAD / CKS) との二刀流、IaC (Bicep / Terraform) 戦略、年収レンジまで日本語で網羅。

Azure Managed Identity vs Service Principal 完全比較|認証パターンの選定と実装ベストプラクティス【2026 年版】

Azure の認証エンティティ Managed Identity と Service Principal を完全比較。System-assigned / User-assigned の使い分け、Client Secret vs Certificate vs Workload Identity Federation の選定、AKS Workload Identity、Azure サービス対応状況、関連認定試験 (SC-300 / AZ-204 / AZ-400) を日本語で網羅。実装パターン集付き。

Technical information in this article is based on the Azure Kubernetes Service Documentation. This article is not an official Microsoft Corporation product and has no affiliation or sponsorship. Microsoft and Azure are trademarks of the Microsoft group of companies. Kubernetes is a registered trademark of the Linux Foundation. Information is based on official public materials as of May 24, 2026. Always check the official pages for the latest information.

Check what you learned with practice questions

Practice with certification-focused question sets

View Azure exam prep
Author

NicheeLab Editorial Team

NicheeLab editorial team focused on data engineering and cloud certification learning. Content is structured around practical study needs and official exam domains.


Related articles
Azure

AZ-900 Azure Fundamentals: Complete Exam Guide (2026)

Pass AZ-900 — cloud concepts, Azure architecture, management...

Azure

Azure Certification Roadmap: Which Cert to Take Next (2026)

Choose your Azure certification path — Fundamentals, Associa...

Azure

AI-901 Azure AI Fundamentals (Beta): Complete Guide (2026)

Pass AI-901 — Microsoft Foundry, generative AI, responsible ...

Azure

Microsoft Entra ID Fundamentals for Azure Certs (2026)

Entra ID basics every cert candidate needs — tenants, identi...

Azure

DP-900 Azure Data Fundamentals: Complete Guide (2026)

Pass DP-900 — relational, non-relational, analytics, Power B...

Browse all Azure articles (104)
© 2026 NicheeLab All rights reserved.