⚙️ No Requests = Unpredictable Scheduling
Without resource requests, pods can starve others. Requests and limits ensure fair sharing and prevent resource exhaustion.
📝 Setting Resources
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
containers:
- name: app
image: myapp:latest
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
# CPU units: 1000m = 1 core
# Memory units: Mi = Mebibytes, Gi = Gibibytes
# Best practices:
# requests = what you need minimum
# limits = what you can use maximum
# requests <= limits
🎯 Why It Matters
Without requests: - Scheduler doesn't know pod's needs - Can schedule 100 pods on one node - Node runs out of memory → OOM kills - CPU throttling without limits With requests: - Scheduler places pods appropriately - Guaranteed resources - Fair sharing between pods - Horizontal scaling works correctly Commands: kubectl top pods kubectl describe node node1 kubectl describe pod myapp
💡 LimitRange (Namespace Defaults)
- Set default requests/limits per namespace
- Prevents pods from being created without resources
- Enforces minimum and maximum values
"No resource requests. One pod used all CPU. Others starved. Added requests and limits. Fair sharing restored. Always set resource requirements."
