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.

69% Year-over-year increase in CPU overprovisioning

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:

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.

$300K Potential annual waste on a $500K infrastructure bill

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:

  1. Identify the gap between request and actual peak usage
  2. Set new requests at 80% of observed peak (not average)
  3. Set limits at 120-150% of new requests
  4. Deploy to staging and monitor for 24-48 hours
  5. 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.

25-40% Typical infrastructure cost reduction after VPA implementation

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:

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:

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:

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.

clide@butler.solutions

Based in Detroit. Serving infrastructure globally.