Skip to content
Rahul Shishodiaon GitHub LinkedIn profile

Resource Requirements, Limits, and Quotas

QoS classes

ClassCondition
Guaranteedrequests == limits (all containers)
Burstablerequests < limits
BestEffortNo requests/limits

Requests vs limits

RequestsLimits
PurposeScheduler minimum per containerCap max usage
CPU unit500m = 0.5 CPUsame
Memory64Mi, 1Gisame
If exceededPod stays Pending (no node)OOM kill (memory) / throttle (CPU)
  • Scheduler sums all container requests in Pod
  • HPA needs CPU requests: else <unknown> target
resources:
  requests:
    cpu: 250m
    memory: 64Mi
  limits:
    memory: 64Mi    # best practice: memory limit = request
    cpu: 500m

ResourceQuota (namespace aggregate)

  • Caps total resources used in a namespace
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-quota
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    pods: "10"
kubectl create quota compute-quota --hard=requests.cpu=4,requests.memory=8Gi,pods=10
kubectl describe quota compute-quota
  • Pod rejected if quota exceeded: check events

LimitRange (per-object defaults/constraints)

  • Default/min/max per Pod or container in namespace
apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    max:
      memory: 1Gi
    min:
      memory: 128Mi
    type: Container

In-place Pod vertical scaling

Kubernetes v1.35 includes in-place CPU/memory resizing support where the feature is enabled. For CKAD, know the idea and how to inspect it; most tasks still use Pod templates on Deployments.

kubectl set resources deployment/app \
  --requests=cpu=250m,memory=256Mi \
  --limits=cpu=500m,memory=512Mi

kubectl get pod <pod> -o jsonpath='{.status.containerStatuses[*].resources}'
  • Deployment template change is the safe exam path
  • Pod-level resize depends on cluster feature support and resource resize policy

Failures

SymptomCause
HPA <unknown> / no scaleNo CPU requests
OOMKilledMemory limit too low or no headroom

Exam tips

  • Pending + PodExceedsFreeCPU: requests too high for any node
  • ResourceQuota vs LimitRange: namespace total vs per-Pod/container
  • Without requests on containers, HPA cannot scale on CPU %
  • In-place resize appearing in a question is likely inspect/patch-level, not deep scheduling theory