Kubernetes Resource Management: Requests and Limits
Proper resource management prevents resource contention and ensures application stability.
Requests vs Limits
| Concept | Description |
|---|---|
| Requests | Guaranteed resources for scheduling |
| Limits | Maximum resources allowed |
Setting Resources
spec:
containers:
- name: app
image: my-app
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"CPU Units
1= 1 vCPU/core100m= 100 millicores = 0.1 CPU500m= 0.5 CPU
Memory Units
Ki= Kibibytes (1024 bytes)Mi= Mebibytes (1024 Ki)Gi= Gibibytes (1024 Mi)
Quality of Service (QoS) Classes
Guaranteed
All containers have equal requests and limits:
resources:
requests:
memory: "256Mi"
cpu: "500m"
limits:
memory: "256Mi"
cpu: "500m"Burstable
At least one container has requests < limits:
resources:
requests:
memory: "128Mi"
limits:
memory: "256Mi"BestEffort
No requests or limits set. First to be evicted under pressure.
What Happens When Limits Exceeded?
| Resource | Behavior |
|---|---|
| CPU | Throttled (slowed down) |
| Memory | OOMKilled (terminated) |
LimitRange
Set namespace defaults and constraints:
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-mem-limits
spec:
limits:
- default:
cpu: 500m
memory: 256Mi
defaultRequest:
cpu: 100m
memory: 128Mi
max:
cpu: "2"
memory: 1Gi
min:
cpu: 50m
memory: 64Mi
type: ContainerResourceQuota
Limit total resources per namespace:
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
requests.cpu: "10"
requests.memory: 20Gi
limits.cpu: "20"
limits.memory: 40GiBest Practices
- Always set requests: Ensures proper scheduling
- Set limits: Prevents runaway containers
- Start conservative: Monitor and adjust
- Use LimitRanges: Enforce defaults
- Monitor usage: Right-size based on actual usage
Debugging Resources
# Check resource usage
kubectl top pods
kubectl top nodes
# Describe pod resources
kubectl describe pod my-pod | grep -A 10 ResourcesPractice Resource Management
Resource questions appear in CKA and CKAD exams. Practice at Sailor.sh.