The data just dropped, and it's brutal. After analyzing tens of thousands of production Kubernetes clusters across AWS, GCP, and Azure, researchers found average CPU utilization at just 8%—down from 10% last year. Memory utilization fell from 23% to 20%. GPU utilization barely registers at 5%.
Meanwhile, CPU overprovisioning jumped from 40% to 69% year over year. Memory overprovisioning sits at 79%. You're paying for infrastructure your workloads don't even request.
Here's the counterintuitive part that most engineering teams miss: more headroom doesn't mean fewer crashes. It often means the opposite.
Why We Overprovision (And Why It's Getting Worse)
The mechanics are simple and seductive. Someone on your team sets a memory request to 4Gi because a workload OOMKilled once in staging. That request stays forever. The pod actually uses 800Mi on average. You're paying for 4Gi every single day while the actual utilization sits at 20%.
Multiply this across hundreds of workloads. Helm charts use conservative estimates. Cluster autoscalers respond to inflated requests as if they were genuine demand, provisioning nodes to match phantom requirements. The waste becomes structural—and invisible to the teams creating it.
The cost of that padding doesn't show up on anyone's dashboard. The engineering team sees stable workloads. The finance team sees a cloud bill that's "just what Kubernetes costs." The gap between requested resources and actual usage becomes somebody else's problem—except there is no somebody else. You're just burning money.
The Reliability Paradox
Most teams overprovision for one reason: they think it makes them more reliable. More headroom means fewer resource-related crashes, right?
Wrong. Here's what actually happens:
One cluster we analyzed averaged 40-50 OOM kills per measurement interval despite generous memory padding. After automated rightsizing was deployed—which also cut provisioned CPUs by roughly half—OOM kills dropped to near zero.
The rightsizing system increased memory limits for workloads under genuine pressure, which is exactly what static overprovisioning misses. Static padding guesses at resource needs. Automated rightsizing measures actual pressure and responds dynamically.
You don't have to choose between efficiency and reliability. Automated rightsizing delivers both because it responds to real conditions instead of conservative estimates from two years ago.
The Real Cost of Doing Nothing
The Kubernetes market is projected to grow to $11.78 billion by 2032 at a 23.4% compound annual growth rate. More companies are adopting Kubernetes every quarter. Most of them are making the same mistakes you're making—and paying the same hidden tax.
Here's what that tax looks like in practice:
- 69% CPU overprovisioning: You're paying for nearly double the compute your workloads request
- 79% memory overprovisioning: Almost 80% of your memory allocation is padding that never gets used
- 8% average CPU utilization: Your expensive compute resources sit idle 92% of the time
- 20% memory utilization: Four-fifths of your provisioned memory is wasted
On a $500,000 annual infrastructure bill, that's potentially $300,000 spent on resources that do nothing but make you feel safe. Meanwhile, your actual reliability problems—workloads that genuinely need more resources—stay hidden under all that padding.
The Rightsizing Framework: From Waste to Efficiency
Here's the 5-step framework I use to fix overprovisioning without breaking production. You can run this yourself or use it as a requirements doc for automation.
Step 1: Measure Actual vs. Requested
You can't fix what you can't see. Start by collecting real utilization data across your clusters.
Average this across your cluster. If you're under 30% utilization, you're in the danger zone. Most teams are shocked by how low their real numbers are.
Step 2: Analyze Peak Patterns, Not Averages
This is where manual optimization usually fails. You look at average usage, set requests to 80% of that, and call it a day. Then production crashes during traffic spikes.
The fix: look at peak usage over a 7-30 day window. Your goal is 70-80% average utilization with headroom for spikes. This requires understanding your workload's actual traffic patterns—not just its steady-state behavior.
Watch for: Cron jobs, batch processes, and scheduled tasks that create predictable spikes. These are often the workloads driving your largest resource requests.
Step 3: Fix the Worst Offenders First
Don't try to rightsize everything at once. Pick your five biggest workloads by resource request and start there.
For each workload:
- Identify the gap between request and actual peak usage
- Set new requests at 80% of observed peak (not average)
- Set limits at 120-150% of new requests
- Deploy to staging and monitor for 24-48 hours
- Promote to production with extra monitoring
The first few workloads will give you 60-80% of your potential savings. Don't let perfect be the enemy of good.
Step 4: Implement Vertical Pod Autoscaling (VPA)
Manual rightsizing is a one-time fix. VPA is continuous optimization. It automatically adjusts CPU and memory requests based on actual usage patterns.
Start VPA in recommendation mode. It won't change anything—just tell you what it would do. Run this for two weeks to build confidence. Then switch to auto mode for non-critical workloads.
Step 5: Build Continuous Monitoring
One-time fixes decay. Workloads change. Traffic patterns shift. Without visibility, you'll be back to 8% utilization within a year.
Implement at minimum:
- Weekly reports on cluster utilization by namespace
- Alerts when any workload drops below 30% utilization for 7 days
- Monthly review of resource requests vs. actual usage
- Quarterly audit of orphaned resources and zombie workloads
The companies that keep costs controlled don't do it through heroic annual audits. They do it through persistent, low-friction visibility.
The Platform Engineering Angle
Here's the bigger picture: individual workload optimization scales poorly. If you have fifty engineers each making resource decisions in isolation, you'll always have waste.
Mature platform engineering teams solve this with guardrails, not just guidelines:
- Default resource quotas: Namespaces get sensible defaults, not infinite resources
- Automated rightsizing: Systems that adjust requests based on actual pressure
- Cost attribution: Teams see their infrastructure costs, creating natural accountability
- Pod disruption budgets: Workloads declare their tolerance for interruption, enabling spot instances and aggressive bin-packing
Organizations with mature platform engineering practices see 40-50% improvements in resource efficiency. Not because they try harder—because their systems make waste visible and painful.
The Real Talk
Here's what happens when you fix your overprovisioning:
- You stop paying cloud providers for compute you don't use
- Your workloads get the resources they actually need, when they need them
- Your reliability improves because you're no longer hiding pressure behind static padding
- Your team stops treating infrastructure costs as inevitable and starts treating them as optimizable
And here's what doesn't happen: You don't need to rearchitect everything. You don't need a dedicated FinOps team. You don't need to migrate off Kubernetes.
The waste is already there, silently accumulating in every resource request made out of caution instead of data. Most of it can be eliminated with a few afternoons of focused work and some basic automation.
The companies winning right now aren't spending more on infrastructure—they're spending smarter. They're the ones who noticed that efficiency and reliability aren't tradeoffs when you respond to actual conditions instead of conservative estimates.
Run the audit this week. Find your five worst offenders. Set up VPA in recommendation mode. Build one weekly cost report.
Small steps compound into massive savings. And unlike that 4Gi memory request from 2023, these changes actually pay off.
Want help with this?
I'll audit your Kubernetes clusters and identify immediate rightsizing opportunities. Most first-pass audits find 25-40% waste hiding in plain sight.
Based in Detroit. Serving infrastructure globally.