Right-size Kubernetes requests and limits

Find over-requested containers, ones about to be OOM-killed and ones with no requests — from real use in Prometheus.

Requests decide where pods are scheduled and how much of a node they reserve; limits decide when a container is throttled or OOM-killed. Set them too high and you pay for capacity nobody uses; too low and pods are evicted or killed under load. KubeEyes’ Health → Right-sizing compares each container’s settings with what it really used.

Right-sizing table comparing each container’s requests with its real CPU and memory use, with suggested requests

What it measures

How suggestions are made

What it flags

Applying a suggestion

Each row copies a command like this one, with the cluster, namespace and container filled in:

kubectl set resources deployment/web -c web --requests=cpu=100m,memory=128Mi

It changes the running workload. If your manifests live in Git (Helm values, Kustomize, Argo CD or Flux), put the same values there, or the next sync puts the old ones back. Review traffic peaks first: seven days include a full week, while 24 hours may miss them.

Runtimes that report usage per pod only

Some container runtimes (Docker through cri-dockerd, as on minikube) give per-pod totals, not per-container numbers. KubeEyes then compares a multi-container workload’s total use with its containers’ requests added up, in one “(all containers)” row.

Questions

How does KubeEyes suggest Kubernetes resource requests?

From Prometheus: the 95th-percentile CPU and the peak memory working set over 24 hours or 7 days, plus 20% headroom, rounded to 10m CPU and 16 Mi memory.

Does right-sizing need Prometheus?

Yes. It reads container CPU and memory history from a Prometheus-compatible backend in the cluster (Prometheus, Mimir, Thanos, VictoriaMetrics or Cortex).