Skip to content
All posts
AWS Cost

Karpenter vs Cluster Autoscaler: when the migration pays off

How Karpenter differs from Cluster Autoscaler, where the savings actually come from, and a safe migration outline.

By Mike ShobitanPublished Jan 5, 2026Updated Oct 23, 20265 min read

For years, Cluster Autoscaler was the default way to scale EKS nodes. Karpenter, now at v1 and maintained as an open-source AWS project, is a better fit for most clusters with mixed workloads. Here's what changes and when it's worth the migration.

How the two differ

Cluster AutoscalerKarpenter
ScalesExisting node groups (Auto Scaling Groups)Individual nodes, launched directly
Instance choiceFixed per node groupChosen per pending pod from the types you allow
ConsolidationScales down empty or underused nodes in a groupReplaces or removes nodes to pack pods onto cheaper capacity
SpotOne node group per instance mixSpot and On-Demand in one NodePool, with fallback

Where the money comes from

  • Right-sized nodes. Karpenter picks an instance that fits the pending pods instead of adding another copy of whatever the node group uses.
  • Consolidation. With consolidationPolicy: WhenEmptyOrUnderutilized, it moves pods off underused nodes and removes them.
  • Easier Spot. Broad instance diversity is one requirements block, not a dozen node groups.

How much this saves depends almost entirely on how inflated your pod requests are and how uneven your traffic is. I won't give you a percentage without seeing the cluster. Anyone who does is guessing.

When it's worth migrating

  • You run several node groups just to get different instance shapes.
  • Nodes sit at low utilization most of the day.
  • You want Spot but node group sprawl has stopped you.

If you run a small, steady cluster on one node group with good utilization, the gain may not be worth the change.

Migration outline

  1. Fix pod requests and limits first. Karpenter sizes nodes from requests, so bad requests mean bad nodes.
  2. Install Karpenter on a small managed node group (or Fargate) that it doesn't manage itself.
  3. Create an EC2NodeClass and a NodePool, starting with On-Demand only.
  4. Move one workload at a time with node selectors or taints, then scale the old node group down.
  5. Turn on consolidation and Spot once things are stable, with PodDisruptionBudgets in place.

See the Spot-ready NodePool example in Spot vs Savings Plans, and the Karpenter docs for the current install steps.

Karpenter migrations are part of the EKS Cost Sprint: review first, then PRs you can merge one at a time.

Not sure what's wrong?

Start with the diagnostic. The $250 fee is credited to the fix.