Cluster Autoscaler vs Karpenter: Node-Level Scaling in Kubernetes
Fast recall
Quick revision
Core answer
Understanding of node-level scaling, not just pod-level; and whether you've followed the Karpenter evolution
Thinking HPA alone provides elasticity (no, it scales pods but if nodes are full, pods stay Pending); or ignoring Spot instances for cost
Explain the pod-level signal both autoscalers use (Pending pods), how Karpenter bypasses ASGs, Spot interruption handling (Karpenter's node drain on rebalance recommendation), cost savings from right-sized instances, and how HPA/KEDA + Karpenter compose
Interview-ready guide
Interview answer
HPA scales pods, but pods need nodes to run on. When HPA requests 30 replicas and the cluster has room for 3, 27 pods stay Pending. Node-level autoscaling is the other half of the elasticity story.
Cluster Autoscaler
- Open source, works on all clouds, operates on pre-defined node groups (ASGs on AWS, MIGs on GCP).
- Watches Pending pods; when a pod cannot schedule on any existing node, CA picks a matching node group and tells the cloud to scale that ASG up.
- Scale-up takes 3 to 5 minutes — EC2 boot + AMI + kubelet join; Pending pods back up during the wait.
- Scale-down drains under-utilized nodes (below 50% requests for 10 minutes by default) respecting PodDisruptionBudgets.
Karpenter
- Open source, originally AWS, now Azure too; replaces Cluster Autoscaler for those clouds.
- Node-group-less — looks at the exact resource shape of pending pods and queries the EC2 catalog for the cheapest instance type that fits; provisions via EC2 Fleet API.
- Scale-up is 30 to 60 seconds vs CA's 3 to 5 minutes — 5 to 10 times faster because there is no ASG indirection.
- Consolidation continuously re-evaluates whether the fleet can be replaced with fewer or cheaper nodes; drains and replaces respecting PDBs.
- First-class Spot support with mixed Spot/on-demand in one NodePool; subscribes to EC2 interruption events so it can drain and provision replacement before AWS reclaims the instance.
Cost impact
- On variable workloads, Karpenter typically runs 20 to 50 percent cheaper than Cluster Autoscaler because it picks right-sized instances and leverages Spot aggressively.
- For stable workloads the savings are smaller but still positive due to continuous consolidation removing idle capacity.
How they compose with HPA and KEDA
- HPA or KEDA scales the Deployment replica count — replicas become Pods — Pods Pending — the cluster autoscaler adds a node.
- With KEDA scaling from zero and Karpenter provisioning nodes in under a minute, end-to-end wake-up from zero to serving a burst is measurable in one to two minutes.
When to pick each
- Karpenter on AWS or Azure with variable workloads and cost optimization pressure — the default recommendation now for new EKS clusters.
- Cluster Autoscaler for multi-cloud, on-prem, or stable workloads where the operational simplicity of node groups is valuable.
- Both require PDBs and working graceful shutdown on apps — consolidation drains nodes; apps that don't handle SIGTERM drop requests.
Gotchas
- PodDisruptionBudgets must be set correctly — without them consolidation and scale-down cause availability hits.
- Pod density limits per instance type (AWS VPC CNI IP limits) — small instances only run 10 pods; autoscaler bin-packing must respect this.
- Karpenter's consolidation can be aggressive —
consolidateAfter: 30sis fine for cost optimization but moves pods frequently; raise it if churn is a problem.
Cluster Autoscaler vs Karpenter: Node-Level Scaling in Kubernetes
Direct Answer
Cluster Autoscaler (CA) adds nodes when pods are Pending and removes nodes that are underutilized. It operates on pre-defined node groups (ASGs) and has coarse scaling granularity — you get whatever instance type the group is. Karpenter (AWS, with Azure support) is node-group-less: it looks at the exact CPU/memory of pending pods, picks the cheapest EC2 instance type that fits (including Spot and mixed instance types), and provisions in 30–60s vs CA's 3–5 min. Karpenter is faster, cheaper, and more flexible — now the default choice for new EKS clusters. GKE has its own autoscaler with similar capabilities.
Common Mistakes & Pitfalls
Thinking HPA alone provides elasticity (no, it scales pods but if nodes are full, pods stay Pending); or ignoring Spot instances for cost
Check your understanding
Answer these without looking back at the article.
- How does Karpenter handle Spot instance interruptions without dropping traffic?
- What is PodDisruptionBudget and why is it mandatory with Cluster Autoscaler?
- How do HPA, KEDA, and Karpenter compose for end-to-end elasticity?
- When would you prefer EKS Auto Mode or GKE Autopilot over managing Karpenter yourself?
Related interview prep categories
2Looking for a structured roadmap?
Every module on this page is also part of the full Java backend interview track.