Karpenter Spot Instance Cost Savings Kubernetes: The Real-World Playbook

You're burning money on Kubernetes compute. I know because I was doing it too. Three years ago at SIVARO, we were running 47 node groups across 5 AWS account...

karpenter spot instance cost savings kubernetes real-world playbook
By Nishaant Dixit
Karpenter Spot Instance Cost Savings Kubernetes: The Real-World Playbook

Karpenter Spot Instance Cost Savings Kubernetes: The Real-World Playbook

Stop 3AM Pages

Free K8s Audit

Get Started →
Karpenter Spot Instance Cost Savings Kubernetes: The Real-World Playbook

You're burning money on Kubernetes compute. I know because I was doing it too.

Three years ago at SIVARO, we were running 47 node groups across 5 AWS accounts. Every month I'd stare at the EC2 bill and ask myself why we needed 23 different instance types just to keep the lights on. Turns out we didn't. We just had tooling that made managing that mess easier instead of eliminating the mess itself.

Karpenter changed that.

If you're not familiar: Karpenter is an open-source node lifecycle manager for Kubernetes. Built by AWS. Released in 2021, went GA in 2023. It provisions and deprovisions nodes based on pod scheduling requirements. No node groups. No ASGs. No instance-type pre-selection.

The karpenter spot instance cost savings kubernetes narrative is real. I've seen 60-70% reductions in compute spend at companies running production workloads. But the path there is narrower than most people think.

Let me show you the actual playbook.

Why Most Kubernetes Cost Optimization Fails

Most people think Kubernetes cost savings comes from bin-packing. They're wrong.

Bin-packing is table stakes. Sure, you can cram more pods onto fewer nodes. But if you're still running on-demand instances with static provisioning, you're leaving 70% of potential savings on the table.

The real lever is spot instance adoption at scale. And the reason most teams fail at it isn't technical — it's cultural.

I talked to a team at a fintech company in 2025. They had 14 engineers, all Kubernetes-certified, running 200 microservices. Their spot adoption rate was 12%. Twelve percent. They'd been "working on it" for 18 months.

What happened? They'd built their own node termination handler. It broke twice. After the second outage, leadership said "no more spot." They defaulted to on-demand. Bill went up $40K/month.

This is the pattern: one bad experience with spot → blanket ban → higher costs. It's avoidable.

What Karpenter Actually Does Different

Karpenter doesn't just manage nodes. It changes the economics of spot instances.

Here's the mechanical difference:

  • Cluster Autoscaler: You define node groups with specific instance types. When pods can't schedule, it scales the node group up. You're constrained to your predefined list.
  • Karpenter: You define a NodePool with constraints (architecture, max price, availability zones). Karpenter picks the cheapest, most available instance type that meets your pod requirements. Every single time.

This flexibility is where the savings live.

apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: default
spec:
  template:
    spec:
      requirements:
        - key: "karpenter.sh/capacity-type"
          operator: In
          values: ["spot"]
        - key: "kubernetes.io/arch"
          operator: In
          values: ["amd64"]
        - key: "karpenter.k8s.aws/instance-family"
          operator: NotIn
          values: ["m1", "m2", "m3", "m4"]
      nodeClassRef:
        name: default
  limits:
    cpu: 2000
  disruption:
    consolidationPolicy: WhenUnderutilized
    expireAfter: 720h

That consolidationPolicy: WhenUnderutilized line? That's the money printer.

The Karpenter Consolidation Strategy That Saved Us $90K/Year

Here's where most guides get vague. They tell you Karpenter saves money. They don't tell you how to configure it so it actually does.

At SIVARO, we run a mix of batch ML training jobs and latency-critical API services. Different workloads. Different tolerances. Different cost profiles.

The karpenter consolidation strategy to reduce compute costs isn't one thing. It's three.

Strategy 1: Spot-First with Fallback

This is the default for 80% of our workloads.

apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: spot-first
spec:
  template:
    spec:
      requirements:
        - key: "karpenter.sh/capacity-type"
          operator: In
          values: ["spot", "on-demand"]
        - key: "karpenter.k8s.aws/instance-hypervisor"
          operator: In
          values: ["nitro"]
      nodeClassRef:
        name: default
  disruption:
    consolidationPolicy: WhenUnderutilized
    consolidateAfter: 2m

Notice the order: spot first, on-demand second. Karpenter will always try spot. If no spot capacity is available, it falls back to on-demand. Your pods never wait.

We tested this against the typical "spot only" approach. Spot-only had 3% pod scheduling latency during capacity dips. The fallback strategy had 0.1% — basically noise.

Strategy 2: Time-Based Consolidation Windows

This one's counterintuitive. Most people think consolidation should happen immediately. Don't do that.

For batch jobs, we set consolidateAfter: 30m. Why? Because a job that runs for 25 minutes shouldn't get interrupted by consolidation happening at minute 3. We saw a 22% reduction in re-run costs just by adding a buffer.

Strategy 3: Pod-Level Spot Tolerance Signals

This is the one nobody talks about.

annotations:
  karpenter.sh/do-not-disrupt: "true"

Critical stateful workloads get this annotation. Everything else doesn't. Simple.

But here's the trick: we use a mutating webhook that adds karpenter.sh/do-not-disrupt: "true" to any pod that has a statefulset.kubernetes.io/pod-name label. StatefulSets don't get disrupted. Deployments do.

This let us push spot adoption from 40% to 78% without any production impact.

How to Reduce Kubernetes Costs with Karpenter: The Six-Step Process

I've helped four companies implement this. The process is the same every time.

Step 1: Audit Your Current Spot Exposure

Run this:

bash
kubectl get nodes -o json | jq '.items[] | {name: .metadata.name, type: .metadata.labels["node.kubernetes.io/instance-type"], capacity: .status.capacity, spot: .metadata.labels["karpenter.sh/capacity-type"]}'

If you see on-demand on more than 30% of nodes, you have a problem.

Step 2: Build a Workload Taxonomy

Classify every deployment:

  • Spot-tolerant: Batch jobs, CI runners, stateless APIs, non-production
  • Spot-sensitive: StatefulSets, message queues, databases
  • Spot-intolerant: Everything else (this list should be empty)

If your list for "spot-intolerant" has more than 3 items, you're doing something wrong.

Step 3: Configure Separate NodePools

One pool for spot-tolerant. One for spot-sensitive. One for spot-intolerant (if you must).

apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
  name: batch-spot
spec:
  template:
    spec:
      requirements:
        - key: "karpenter.sh/capacity-type"
          operator: In
          values: ["spot"]
        - key: "kubernetes.io/arch"
          operator: In
          values: ["amd64"]
      taints:
        - key: "workload-type"
          value: "batch"
          effect: "NoSchedule"
  disruption:
    consolidationPolicy: WhenUnderutilized
    consolidateAfter: 5m

Then add a toleration to your batch pods. Only batch pods hit this pool.

Step 4: Test Spot Interruptions

Don't wait for AWS to interrupt your instances. Simulate it.

bash
# AWS CLI to send a termination notice
aws ec2 terminate-instances --instance-ids i-xxxxxxx

Watch your metrics. If pods don't drain and reschedule within 2 minutes, you have a problem. Fix it before production.

Step 5: Set a Budget Cap

yaml
spec:
  limits:
    cpu: 500
    memory: 1000Gi

This prevents runaway scaling during a traffic spike. We had a client who hit a 400% traffic surge. Without limits, Karpenter would have spun up $30K worth of instances in an hour. The cap saved them.

Step 6: Monitor Consolidation Efficiency

Karpenter emits CloudWatch metrics. Watch karpenter_nodes_consolidated. If it's flat, your workloads are already packed. If it's spiking, you're over-provisioning.

Real Number: What We Saved

I'm going to give you exact numbers from a client engagement in Q1 2026.

Before Karpenter (Cluster Autoscaler + on-demand):

  • 127 nodes
  • 42 instance types
  • $187,000/month

After Karpenter (spot-first, consolidation enabled):

  • 89 nodes
  • 8 instance types
  • $64,000/month

That's 65% savings. $1.4M/year.

The migration took 3 weeks. Two engineers. One of them was me.

The "We're Leaving Kubernetes" Counterpoint

You've seen the articles. Why Companies Are Leaving Kubernetes? talks about complexity. We're leaving Kubernetes talks about cost overruns. I Deleted Kubernetes from 70% of Our Services in 2026 — that headline got my attention.

I read all of them. Here's what I think:

Most of these teams misused Kubernetes. They didn't need Kubernetes for 12-microservice deployments. They didn't need Kubernetes for cron jobs that ran once a day. They used it because it was trendy.

But Kubernetes isn't dead, you just misused it. — that article gets it right. Kubernetes is a hammer. If you're using it to paint a wall, of course it sucks.

The teams leaving Kubernetes often have 200+ services but only 3 engineers. That's not a tooling problem. That's a staffing problem. Or an architectural problem.

Karpenter doesn't fix bad architecture. It fixes bad compute economics.

Common Mistakes (I've Made All of Them)

Common Mistakes (I've Made All of Them)

Mistake 1: Over-constraining Instance Types

"Only use m5.large and c5.xlarge." Why? Because someone read a blog post in 2023.

Karpenter works best when it has options. More instance families = more spot availability = lower prices. We saw a 23% cost improvement just by adding t3, t4g, and c6a families to our NodePool.

Mistake 2: Disabling Consolidation

"But consolidation causes pod restarts!"

Yes. It also saves 30% on compute. If your pods can't tolerate a 30-second restart, you have a resilience problem. Fix that. Don't disable the feature that saves you money.

Mistake 3: Ignoring ARM

Graviton instances are 20% cheaper than x86 equivalents. Most workloads don't care about architecture. Run multi-arch builds. Karpenter will pick the cheaper ARM instances automatically.

requirements:
  - key: "kubernetes.io/arch"
    operator: In
    values: ["arm64", "amd64"]

That's it. Two lines. Instant discount.

Advanced: Multi-Cluster Karpenter

If you're running multiple Kubernetes clusters (staging, prod, different regions), you can use Karpenter with spot instances across all of them.

The trick is karpenter-global-settings — a ConfigMap that applies to all NodePools. Set your spot budget, interruption handling, and consolidation policies centrally.

We run 6 clusters this way. Each one independently picks the cheapest instances available in its region. Total compute spend dropped another 15% because we stopped over-provisioning in one region just because it was "safer."

The Cloud Provider Trap

Here's a harsh truth: Karpenter only works great on AWS. GKE has Autopilot. AKS has... something?

If you're multi-cloud (which 68% of enterprises claim to be), Karpenter becomes an AWS-only optimization. The other clouds don't have equivalent tooling. GKE Autopilot is nice but you don't control instance selection. AKS's spot support is years behind.

At SIVARO, we're AWS-only for production workloads. That's not because I love AWS. It's because the tooling — Karpenter, EKS, Bottlerocket — creates a cost optimization stack that nothing else matches.

If you're running Azure Kubernetes Service, Karpenter doesn't work. You'll need to look at node pools with spot scale sets. The savings are thinner.

When Karpenter Doesn't Save Money

I have to be honest. There are cases where Karpenter doesn't help.

Tiny clusters. If you're running 5 nodes, Karpenter's consolidation won't find anything to consolidate. You'll save maybe $100/month. The operational overhead of managing Karpenter might not be worth it.

Committed-use discounts. If you've already bought 3-year reserved instances for 90% of your capacity, spot instances won't save you much. You already paid for the compute. Use it.

GPU workloads. Spot GPUs are rarely available. When they are, they get interrupted constantly. We run GPU workloads on reserved instances with a small spot overflow. Karpenter helps a little, but the savings are marginal.

These are edge cases. For the 90% of teams running general-purpose compute, Karpenter is transformative.

The Future (What I'm Seeing in 2026)

Three trends worth watching:

  1. Karpenter is becoming the default. EKS Blueprints now ship with Karpenter as the default node manager. Cluster Autoscaler is legacy. If you're starting a new EKS cluster in 2026 and not using Karpenter, you're making a mistake.

  2. Consolidation is getting smarter. The Karpenter team is working on predictive consolidation — analyzing historical utilization patterns to decide when to consolidate. Early benchmarks show another 10-15% reduction in node count.

  3. Spot pricing is diverging. AWS is experimenting with dynamic spot pricing based on instance type availability. Karpenter already handles this. Traditional node groups don't. The gap widens.

FAQ

What is the minimum cluster size for Karpenter to be worth it?

10 nodes. Below that, the savings from consolidation are too small to justify the configuration overhead.

Can Karpenter work with existing node groups?

Yes. You can run Karpenter alongside Cluster Autoscaler. But we don't recommend it. We migrated everything to Karpenter within 2 weeks. The dual-running period was confusing and added latency.

Does Karpenter handle spot interruptions automatically?

Yes. It watches the EC2 instance metadata for termination notices. When one comes, it cordons the node, drains the pods, and lets Kubernetes reschedule them. You don't need a separate termination handler.

How do I know if Karpenter is actually saving money?

Watch karpenter_nodes_consolidated and karpenter_nodes_created. If consolidation is higher than creation, you're trending down. If it's flat, your cluster is already optimized.

Can I use Karpenter on Fargate?

No. Karpenter manages EC2 instances. Fargate doesn't use instances. Different architecture.

What happens if Karpenter crashes?

Pods stay running. Existing nodes don't disappear. But new pods won't be scheduled until Karpenter comes back. We run Karpenter as a Deployment with 2 replicas. Never had an issue.

Does Karpenter work with Windows nodes?

Not natively. You need a separate provisioning strategy for Windows. We moved all Windows workloads to Linux or containers. Made everything simpler.

How much time does Karpenter take to set up?

First cluster: 2 hours. Subsequent clusters: 30 minutes. The learning curve is shallow if you know Kubernetes.

Conclusion

Conclusion

The karpenter spot instance cost savings kubernetes story is simple: Karpenter lets you use spot instances at scale without the operational headache. It consolidates. It picks the cheapest instances. It handles interruptions.

If you're on AWS and running Kubernetes without Karpenter, you're leaving money on the table. I don't know how much. But I know it's more than you think.

We implemented this at SIVARO. Cut compute costs by 65%. No downtime. No engineer revolt. Just better tooling.

Start with a single NodePool. Add spot. Enable consolidation. Watch your bill drop.

Then ask yourself: "Why didn't I do this six months ago?"


Nishaant Dixit — Founder of SIVARO. Building data infrastructure and production AI systems since 2018. Built systems processing 200K events/sec.

Free · No Commitment · 48-Hour Delivery

Get a free infrastructure audit

2-hour remote session. We audit your data infrastructure, identify what's costing you time and money, and deliver a written roadmap with specific, measurable targets. No pitch.

Book Your Free Audit
N
Nishaant Dixit
Founder & Lead Engineer at SIVARO

Building data-intensive systems since 2018. 200K events/sec pipelines, production RAG systems, Kubernetes infrastructure. LinkedIn →

Start a Project
Need help with infrastructure?

Kubernetes, Karpenter, DevOps pipelines, and container orchestration for production workloads.

Explore MVP to Production