Kubernetes Rightsizing: A Practical Workflow for CPU and Memory Optimization Kubernetes rightsizing matches pod resource requests to actual usage, closing an overprovisioning gap where 69% of requested CPU goes unused, according to the 2026 Cast AI report. A five-step workflow—Observe, Set Requests, Set Limits, Verify, Repeat—can reduce compute costs by 40-70% without code changes. Kubernetes 1.33+ supports zero-downtime in-place resizing, and GPU waste, averaging 5% utilization, can be cut by 70% via fractional sharing. Kubernetes rightsizing is the practice of matching pod CPU and memory requests and limits to actual usage, so you stop paying for capacity you never use without risking throttling or OOM kills. Most clusters show 8% average CPU utilization: pods consume only a small fraction of what they allocate. The 2026 Cast AI report quantifies the gap: 69% of requested CPU across production clusters goes entirely unused. That is the overprovisioning gap that rightsizing closes. Key Takeaways CPU is wasted by default: Average CPU utilization across production Kubernetes clusters is 8%; 69% of requested CPU goes entirely unused Cast AI 2026 State of Kubernetes Optimization Report https://cast.ai/reports/state-of-kubernetes-optimization/ . Rightsizing is the safest cost lever: Correcting resource requests requires no code changes, no replica adjustments, and no architectural redesign only configuration fixes. Follow the five-step workflow: Observe real usage 2+ weeks → Set CPU requests at p95 typical → Set limits to protect neighbors → Verify with throttling and OOM checks → Repeat as workloads evolve. Zero-downtime resizing is available: Kubernetes 1.33+ supports in-place pod resizing InPlacePodVerticalScaling, beta in 1.33, GA in 1.35 ; CPU adjustments apply without a container restart. GPU waste is the most expensive gap: Average GPU utilization is 5%; fractional GPU sharing via time-slicing, MIG, or NVIDIA MPS can cut GPU costs by 70% or more without changing model code. Expected savings: 40–70% compute cost reduction is realistic for clusters with no previous rightsizing; automated rightsizing Cast AI Workload Autoscaler has delivered up to 93% utilization improvement. What Rightsizing Is and Why It Is the Safest Lever Requests define the CPU and memory Kubernetes reserves on a node for a pod. Limits define how much the pod can consume before it gets throttled CPU or killed memory . The scheduler uses requests to place pods. Nodes fill up based on requests, not actual usage. The gap between those two numbers is where your money disappears. The Cast AI 2026 State of Kubernetes Optimization Report measured tens of thousands of production clusters across AWS, GCP, and Azure. Average CPU utilization: 8%. Average memory utilization: 20%. CPU overprovisioning sits at 69% up from 40% year over year . Memory overprovisioning is 79%. Those are two distinct measurements. The 8% figure is average CPU utilization: how much of reserved capacity pods actually consume at runtime. The 69% figure is the overprovisioning ratio: how much of CPU requests is never consumed across production clusters. Together, they confirm that most clusters provision many times more CPU than their workloads actually need. No autoscaler can fix this at the node level if pods hold oversized requests. Node autoscalers see a “full” cluster and add nodes. The waste scales with you. Rightsizing is the safest lever because it reduces waste without changing what your application does. You are not modifying code, not changing replicas, not touching network policy. You are correcting a configuration error that most teams introduced when they set resources by gut feel during initial deployment and never revisited. The Rightsizing Workflow The Rightsizing Workflow is a five-step cycle: Observe, Set Requests to Typical, Set Limits to Protect, Verify, Repeat. It applies whether you are doing this manually, with VPA, or with an automated platform. The cycle does not end after the first pass. Observe Start with real usage data. Two weeks minimum. One week misses weekly batch jobs. One day misses end-of-month spikes. The longer the observation window, the more accurate the recommendation. For a quick baseline, run these two commands: Check actual usage vs requests kubectl top pod -n