DevTools Logo

Kubernetes Resources & Limits Cheat Sheet

Kubernetes CPU/memory requests, limits, quotas, limit ranges, and resource sizing guidance.

Containers & Cloud
kubernetes
k8s
resources

Kubernetes schedules pods onto nodes based on declared resource requests and enforces caps with limits. Requests reserve capacity; limits bound consumption. Setting both prevents overcommit and eviction.

Requests and limits

yaml
apiVersion: v1
kind: Pod
spec:
  containers:
    - name: app
      image: demo/app:1.0
      resources:
        requests:
          cpu: "250m"
          memory: "256Mi"
        limits:
          cpu: "1"
          memory: "512Mi"
Table
FieldMeaning
requests.cpuCPU guaranteed for scheduling (e.g. 250m = 0.25 core).
requests.memoryMemory guaranteed for scheduling.
limits.cpuMaximum CPU the container may use.
limits.memoryMaximum memory; exceeding it triggers OOM kill.

CPU and memory units

Table
UnitMeaning
1One vCPU/core.
500mHalf a core (500 millicores).
100m0.1 core.
128Mi128 mebibytes (binary).
512M512 megabytes (decimal).
1Gi1 gibibyte.

Quality of Service (QoS) classes

Table
ClassCondition
GuaranteedRequests == limits for CPU and memory on every container.
BurstableAt least one container has a request; not all equal limits.
BestEffortNo requests or limits set.

ResourceQuota and LimitRange

yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: team-quota
spec:
  hard:
    requests.cpu: "10"
    requests.memory: "20Gi"
    limits.cpu: "20"
    limits.memory: "40Gi"
    pods: "50"
Table
ObjectPurpose
ResourceQuotaCaps aggregate usage in a namespace.
LimitRangeSets defaults and min/max per pod or container.

Inspection

bash
kubectl top pods
kubectl top nodes
kubectl describe node <node>   # allocated vs capacity
kubectl get resourcequota

References