How a B2B SaaS Platform Halved Kubernetes Compute Costs with Karpenter and Right-Sized Workloads
A 120-engineer SaaS company cut EKS compute spend by 52% in 90 days by replacing Cluster Autoscaler with Karpenter, enforcing VPA-driven right-sizing, and enabling consolidation. The lesson: most Kubernetes waste is invisible until you measure it.
Containers & K8s · advanced · 12 min read · 2222 words · By Sandip Das · Published
Composite scenario: built from common industry patterns; the figures are illustrative.
What this covers
- The Situation
- The Problem
- Constraints
- Options Considered
- The Solution
- Implementation
- Results
- What Went Wrong Along the Way
- Lessons Learned
- Apply It Yourself
Key numbers
| Metric | Before | After |
|---|---|---|
| Monthly EC2/EKS compute cost | $310,000 | $149,000 |
| Average CPU request utilisation | 18% | 61% |
| Node count (production cluster) | 180 nodes | 74 nodes |
| Spot instance share of compute | 0% | 58% |
| API p99 latency (30-day avg) | 610 ms | 598 ms |
Key components
- Karpenter NodePool with consolidation — Replaces Cluster Autoscaler and continuously bin-packs running workloads onto fewer, cheaper instances using the disruption consolidation policy.
- Vertical Pod Autoscaler (Off mode) — Generates resource request recommendations without evicting pods, feeding a PR-based workflow that keeps humans in the loop for right-sizing decisions.
- Spot NodePool for batch and workers — Routes interruption-tolerant workloads to Spot capacity across six EC2 instance families, delivering the largest single chunk of cost reduction.
- Kubecost Community Edition — Provides per-namespace and per-deployment cost allocation that surfaces waste and tracks savings against the baseline.
- PodDisruptionBudgets — Prevent Karpenter from over-consolidating the API tier during low-traffic windows that precede traffic spikes.
- AWS Node Termination Handler — Intercepts EC2 Spot interruption notices and cordons nodes, giving pods the full 2-minute window to checkpoint state and terminate gracefully.
The Situation
This is a composite scenario assembled from patterns observed across multiple production Kubernetes environments; the organisation, team structure, and figures are illustrative but internally consistent.
The organisation in question is a 120-engineer B2B SaaS company running a multi-tenant analytics platform. Their backend is entirely on AWS: three EKS clusters (production, staging, and a shared tooling cluster), roughly 400 microservices written in Go and Python, and a handful of GPU-backed ML inference services. The platform team — six engineers — owns the clusters. Individual product squads own their own Helm charts and resource manifests. Monthly AWS spend was approximately $480,000, with EC2 and EKS node costs accounting for $310,000 of that.
---
The rest of this case study — the trade-offs, the scaling numbers and the build prompt — is available to LearnXops members. Create an account or see membership.
Topics: kubernetes, karpenter, cost-optimization, eks, autoscaling, containers
Related case studies
- How a B2B SaaS Platform Upgraded 40 Kubernetes Clusters Across Three Versions Without an Outage
- How a B2B SaaS Team Migrated a Rails Monolith to EKS With Zero Downtime
- How a New Telemetry Service Took Down OpenAI's Kubernetes API Servers and DNS in December 2024
- How One Platform Team Tamed 30 Product Teams on a Single Kubernetes Cluster
- The Pi Day Outage: How a Renamed Kubernetes Node Label Took Reddit Down for Five Hours