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
| Field | Meaning |
|---|---|
requests.cpu | CPU guaranteed for scheduling (e.g. 250m = 0.25 core). |
requests.memory | Memory guaranteed for scheduling. |
limits.cpu | Maximum CPU the container may use. |
limits.memory | Maximum memory; exceeding it triggers OOM kill. |
CPU and memory units
Table
| Unit | Meaning |
|---|---|
1 | One vCPU/core. |
500m | Half a core (500 millicores). |
100m | 0.1 core. |
128Mi | 128 mebibytes (binary). |
512M | 512 megabytes (decimal). |
1Gi | 1 gibibyte. |
Quality of Service (QoS) classes
Table
| Class | Condition |
|---|---|
| Guaranteed | Requests == limits for CPU and memory on every container. |
| Burstable | At least one container has a request; not all equal limits. |
| BestEffort | No 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
| Object | Purpose |
|---|---|
ResourceQuota | Caps aggregate usage in a namespace. |
LimitRange | Sets 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