Fairwinds | Blog

Kubernetes Rightsizing: Requests, Limits, Cost, and Performance

Written by Andy Suderman | Sep 30, 2026, 2:45:00 PM

Kubernetes rightsizing is the practice of setting resource requests and limits to reflect what workloads actually need. It centers on CPU and memory, and it affects how efficiently Kubernetes schedules workloads and how much capacity the cluster requires. Workloads with insufficient CPU or memory configuration can experience CPU throttling, memory pressure, or restarts. Pods can remain pending when their resource requests or other scheduling constraints cannot be satisfied by available Nodes. Those conditions can affect response times, error rates, and reliability.

As Kubernetes environments grow across teams and clusters, resource requests and limits have a direct effect on capacity, application performance, and cloud costs. Rightsizing gives teams a practical way to review those settings against actual workload behavior instead of relying on conservative defaults.

How to Get Kubernetes Rightsizing Just Right

To do Kubernetes rightsizing right, you need to understand a few key things:

  • Workloads: What workloads are you running on Kubernetes? What are their resource requirements? What are their performance and reliability requirements?
  • Kubernetes autoscaling: How do workload requests affect pod placement and cluster scale-up? What capacity is available when demand increases?
  • Monitoring: How are you collecting and reviewing CPU, memory, restart, and workload-performance data over time? This data helps identify rightsizing opportunities.

Review data that reflects routine workload behavior and predictable periods of higher demand before changing requests or limits.

Resource usage metrics

  • CPU usage
  • Memory usage
  • Network usage
  • Pod restarts

Workload requirements

  • Minimum CPU and memory requirements
  • Maximum CPU and memory requirements
  • Startup time
  • Runtime characteristics
  • Dependencies

Cluster capacity

  • Node types and capabilities
  • Autoscaling minimums and maximums

Traffic patterns

  • Peak traffic
  • Average traffic
  • Traffic spikes
  • Traffic distribution across nodes and workloads

Additional data

  • Cost of running the cluster
  • SLAs for workloads
  • Risk tolerance

The following tools can provide some of the usage and cluster-state data needed for a rightsizing review:

  • Goldilocks, which uses Vertical Pod Autoscaler recommendation mode to identify a starting point for resource requests and limits
  • Kubernetes Metrics Server, which provides CPU and memory metrics through the Kubernetes metrics API
  • Prometheus and Grafana, for collecting and reviewing workload metrics over time
  • Cluster Autoscaler, which adds Nodes for unschedulable Pods and removes Nodes that are no longer needed
  • kube-state-metrics, for exposing Kubernetes object and cluster-state metrics

Identify Rightsizing Opportunities

Cloud spend is a significant cost for many organizations, so it makes sense to ensure that resources are allocated as efficiently as possible. Still, it can be challenging to get all the data needed to make informed decisions. It’s often a real challenge to get visibility into your Kubernetes environment at this level, particularly if you have multiple teams, multiple clusters, and multiple clouds at play. That’s why we created Goldilocks.  It creates Vertical Pod Autoscaler resources in recommendation mode for workloads in a namespace and surfaces the resulting recommendations in a dashboard. By default, those VPAs report recommendations but do not automatically change Pods.

Resource requests communicate the CPU and memory a workload needs for scheduling. Limits set an upper bound on the CPU or memory available to a container. Together, they give teams a baseline for balancing workload performance, node utilization, and cost. You should also use monitoring tools on an ongoing basis to track resource usage over time so you can identify workloads that are over- or under-provisioned. Review rightsizing alongside cluster autoscaling. Overstated resource requests can make Pods harder to place on existing Nodes and can prevent Node consolidation, even when actual workload usage is low.

Accurate usage data is central to ongoing rightsizing decisions. In  Kubernetes 1.37, the metrics.k8s.io API graduated to stable, providing a standard way to retrieve CPU and memory usage for Pods and Nodes. Components including the Horizontal Pod Autoscaler and kubectl top use this API.

Getting Started with Kubernetes Rightsizing

Goldilocks provides a starting point for setting resource requests and limits. Teams still need to validate recommendations against each workload’s performance, reliability, and operational requirements.

Here’s how to get started:

  • Start small. Begin with a small set of workloads that appear over- or under-provisioned. Use the recommendations as a baseline, validate the changes, and apply the same review process to additional workloads over time.
  • Be iterative. Rightsizing is not a one-and-done process. Your workloads and clusters will change, and as they do, you’ll need to look at your rightsizing decisions again. Monitor your resource usage and adjust resource limits and requests as needed.
  • Test. Validate updated requests and limits in a non-production environment before deploying them to production. Where it reflects expected workload behavior, load testing can help evaluate whether the settings support anticipated demand.

Policy Guardrails for Kubernetes Rightsizing

Rightsizing depends on teams setting resource requests and limits consistently. Polaris can help validate whether Kubernetes workloads meet configuration standards, including checks for missing resource requests and limits. These guardrails do not replace usage analysis, but they can prevent workloads from bypassing the baseline configuration needed for a rightsizing program.

Policy automation can enforce the configuration standards that make rightsizing possible at scale. Usage analysis remains necessary to identify whether individual workload requests and limits are too high or too low. When resource requests are too high, Pods can be harder to place efficiently and Nodes may be harder to consolidate. When requests or limits do not reflect workload needs, teams may see scheduling pressure, CPU throttling, or memory-related failures. Monitor resource usage over time and revisit workload configuration as workloads and clusters change.

Save Money & Improve Performance with Rightsizing

Rightsizing can help reduce Kubernetes compute costs by ensuring that each workload has the resources it needs, but not more. Rightsizing is most effective when teams treat it as an ongoing review of workload behavior, resource configuration, and cluster capacity. That discipline can reduce unused capacity while helping teams identify configurations that create performance or reliability risk.

 

Originally published 14 November, 2023 and updated 30 September, 2026.