# Karpenter vs Cluster Autoscaler — NodePool Checklist (July 2026)

## Prefer Karpenter when

- Variable pod shapes / Spot diversification needed
- You want consolidation (empty **or** underutilized)
- CA node groups leave half-empty nodes for days

## NodePool hygiene (`karpenter.sh/v1`)

- [ ] `EC2NodeClass` for AMI/subnets/SGs/role
- [ ] Requirements: instance-category `c|m|r`, generation floor, arch (`arm64` when ready)
- [ ] `capacity-type`: spot + on-demand (or separate NodePools by intent)
- [ ] `disruption.consolidationPolicy: WhenEmptyOrUnderutilized`
- [ ] CPU/memory `limits` on the NodePool

## Migration

- [ ] Baseline: node count, avg utilization, $/pod, scale-out p99
- [ ] Install Karpenter with taints; migrate workloads gradually
- [ ] Do not run overlapping CA ASGs that fight Karpenter for the same pods

## Keep CA when

Strict change-control already certified CA-only, or a single fixed instance type with zero dynamic benefit.
