Karpenter vs Cluster Autoscaler: how to choose
Cluster Autoscaler scales node groups you have already defined. Karpenter decides what node to launch when a pod cannot be scheduled, choosing instance type, size and purchase option itself. That is the whole difference, and it changes what you configure: node groups and their bounds versus constraints and the freedom to satisfy them.
Cluster Autoscaler's model is predictable and limited. Because it can only add nodes to existing groups, matching workload shapes to instance types means creating a group per shape, and a cluster with varied resource requirements accumulates node groups until the configuration is the problem.
Karpenter's model is faster and less predictable. It provisions from a broad instance family list, bin-packs pending pods onto a node that actually fits, and consolidates by replacing under-utilised nodes with cheaper ones. Scale-up is measurably quicker because there is no node group to resize. The cost is that node churn is now something you must design for.
The consolidation trade
Karpenter's biggest saving and biggest operational surprise are the same feature. Consolidation continuously looks for a cheaper arrangement of your workloads and acts on it, which means nodes are replaced during normal operation, not just during scale-down. Savings on a varied cluster are frequently significant.
Workloads must therefore tolerate being moved. That means honest PodDisruptionBudgets, sensible termination grace periods, and readiness probes that mean something. Teams that adopt Karpenter without those find pods being rescheduled at inconvenient moments and blame the autoscaler, when what they have actually discovered is that their workloads were never safe to evict.
Decision matrix: which one fits your situation
| Your situation | Use | Why |
|---|---|---|
| Uniform workloads, stable capacity, few node shapes | Cluster Autoscaler | Predictable, well understood, and the extra flexibility buys you little. |
| Varied resource shapes across many teams | Karpenter | Removes the node-group-per-shape sprawl and packs far better. |
| Spiky, latency-sensitive scale-up | Karpenter | Provisions in well under the time a node group resize typically takes. |
| Heavy spot usage | Karpenter | Native interruption handling and automatic diversification across instance types. |
| Multi-cloud, one autoscaling story | Cluster Autoscaler | Karpenter's maturity is strongest on AWS; Cluster Autoscaler runs everywhere. |
| Workloads that cannot be rescheduled | Cluster Autoscaler | Consolidation assumes disruption tolerance. Fix that first, or do not opt in. |
Frequently asked questions
Can I run both at once?
You can, and it is a normal migration path — leave existing node groups under Cluster Autoscaler while Karpenter provisions for new workloads. Keep their scopes clearly separated with labels and taints so they are not both reacting to the same pending pods, and treat it as a transition rather than a destination.
Is Karpenter AWS-only?
No, but AWS is where it is most mature and most widely run. Providers for other clouds exist at varying stages. If you need one autoscaling approach across several clouds today, Cluster Autoscaler is the safer answer; if you are on AWS, Karpenter is the stronger one.
How much does consolidation actually save?
It depends entirely on how badly packed you are now, which is why the honest answer is to measure rather than quote a figure. Clusters with many node groups sized for peak and varied pod shapes have the most to gain. Compare requested versus allocatable capacity across your nodes — the gap is roughly what consolidation is trying to recover.
What breaks when we switch?
Usually three things: PodDisruptionBudgets that were never tested because nothing evicted pods before, workloads with long shutdown paths and short grace periods, and anything assuming node identity — local storage, node-specific DNS, or long-lived connections pinned to a node. None are hard to fix, but they surface all at once.