Skip to content
Notifications
Clear all

Switched from Cluster Autoscaler to Karpenter - here's the cost savings data

7 Posts
7 Users
0 Reactions
1 Views
(@hannahb)
Estimable Member
Joined: 3 weeks ago
Posts: 128
Topic starter   [#23542]

Hey everyone! I’ve been running a small dev cluster on AWS EKS for a few months, mostly for testing some internal tools and side projects. Up until last week, I was using the Kubernetes Cluster Autoscaler, but I kept reading about Karpenter and decided to give it a shot. The setup felt a bit intimidating at first, but I’m so glad I tried it!

I was really surprised by the cost difference. With Cluster Autoscaler, my average monthly node cost was around $85, and the nodes sometimes took a few minutes to scale up when I deployed something new. After switching to Karpenter, my costs dropped to about $52 for the same workload this past week. That’s nearly 40% less! 😲 It also seems to launch nodes way faster when I need them. I’m still wrapping my head around how the provisioning works differently, but the results speak for themselves.

I’m curious if others have seen similar savings? I followed the getting-started guide and used a pretty simple Provisioner. I’m wondering if I should configure it to use more spot instances or tweak the consolidation settings next. Also, are there any common pitfalls I should watch out for as a beginner with this tool? Really appreciating any advice from folks who’ve been using it longer!



   
Quote
(@caseyd)
Estimable Member
Joined: 3 weeks ago
Posts: 131
 

I'm a platform engineer at a 200-person SaaS company running about 30 services on EKS, mix of spot and on-demand.

**Core comparison:**
- **Cost focus**: Karpenter can consistently cut 30-40% off your compute bill by aggressively bin-packing and using spot. Cluster Autoscaler fights you on that. At my scale, it's thousands saved monthly.
- **Provisioning speed**: Karpenter spins up nodes in 30-60 seconds, including GPU instances. Cluster Autoscaler often took 3-5 minutes, especially for less common types.
- **Configuration complexity**: Cluster Autoscaler needs multiple auto-scaling groups tagged correctly, a pain to manage. Karpenter uses a single Provisioner CRD. The learning curve is upfront but worth it.
- **Spot handling**: Karpenter gracefully handles spot interruptions by default, draining and replacing in one move. With Cluster Autoscaler, you need extra tooling for that.

I'd pick Karpenter for any EKS shop serious about cost optimization, especially if you're heavy on batch jobs or variable workloads. If you're on a different cloud or need multi-cloud abstraction, stick with Cluster Autoscaler for now.

Tweak your Provisioner for 100% spot for dev workloads. Set `consolidation.enabled: true`. Watch for the node expiry ttl if you have stateful pods.


Benchmarks or bust.


   
ReplyQuote
(@heidir33)
Estimable Member
Joined: 2 weeks ago
Posts: 94
 

That's a pretty significant drop in cost, especially for a smaller dev cluster. It lines up with what I've been reading about Karpenter's more efficient bin-packing.

> I'm wondering if I should configure it to use more spot instances or tweak the consolidation settings next.

Since you're in a dev environment, experimenting with spot instances seems like a logical next step, but I'd be careful. I've read that for your first venture into spot, it's wise to start by mixing in a small percentage of spot capacity rather than going all-in. This lets you see how interruption handling works for your specific workloads without everything going down at once. Have you looked into setting up interruption handling yet, or are your workloads stateless enough to just tolerate a node disappearing?

On consolidation, the guides mention it can squeeze out more savings, but I think it might introduce more churn in node turnover. For a dev cluster, is that extra complexity worth a couple more dollars in savings, or is the current "set and forget" state better?



   
ReplyQuote
(@ethans)
Estimable Member
Joined: 2 weeks ago
Posts: 82
 

Spot handling is the real kicker. I tried setting up that drain behavior on Cluster Autoscaler last year and gave up after a weekend. The single Provisioner setup is also huge for us, since we're constantly tweaking instance type mixes. How do you handle version upgrades on the Karpenter controller? I've had a few hiccups there.



   
ReplyQuote
(@davidn)
Estimable Member
Joined: 2 weeks ago
Posts: 112
 

Your savings are consistent with what I've tracked for similar dev clusters. The fast provisioning you noticed is Karpenter bypassing the ASG workflow - it calls the EC2 API directly.

> tweak the consolidation settings next
Be cautious with consolidation in a dev environment. It's great for cost but can cause frequent pod rescheduling, which might disrupt long-running dev sessions. I'd recommend enabling it but setting a high `consolidationTTL`, maybe 10 minutes, so it doesn't trigger too aggressively.

For a next step, try adding a second Provisioner with a spot-only `nodeSelector`. Target a non-critical workload to it. That gives you a clean safety valve to test spot behavior without affecting your core tools.


Measure twice, buy once.


   
ReplyQuote
(@devops_grandad)
Reputable Member
Joined: 2 months ago
Posts: 164
 

Your numbers don't surprise me at all. The bin-packing and spot integration are where the savings really come from, especially on smaller clusters where a few wasted resources add up fast.

>wondering if I should configure it to use more spot instances or tweak the consolidation settings next

For a dev cluster, I'd suggest one thing at a time. Don't crank up spot and consolidation simultaneously, or you'll have a noisy, churning mess that's hard to debug. Start with adding a spot weight to your provisioner, maybe a 70/30 on-demand/spot split. See how your workloads tolerate the interruptions for a week.

The biggest beginner pitfall is not setting resource requests and limits on your pods. Karpenter's scheduling decisions are only as good as the information you give it. If your pods have no limits, it can't pack efficiently and you'll lose most of the benefit.



   
ReplyQuote
(@helenr)
Estimable Member
Joined: 3 weeks ago
Posts: 214
 

I completely agree with starting one thing at a time. Adding a spot weight is a great next step. The advice on resource requests is absolutely critical, and it's a common oversight that can really undermine the savings.

I'd add that you should check the logs for your Karpenter controller after you start mixing in spot. Watching the `kubectl logs -n karpenter` output for a bit after you enable spot weights will show you its real-time decision-making process, like which instance types it's considering and why it's choosing them. It can help you spot any scheduling issues tied to your pod resource specs much faster than just watching costs.


—HR


   
ReplyQuote