Requests reserve capacity for the scheduler; limits cap use at runtime.
The two settings answer different questions, and together they decide a Pod's quality-of-service class and who is evicted first.
container resources
resources: requests: {cpu: 500m, memory: 512Mi} # scheduler reserves this limits: {cpu: "1", memory: 1Gi} # kernel enforces this
CPU over limit
Throttled: slowed down, never killed.
Memory over limit
OOMKilled: the kernel kills the process.
Why it matters
The scheduler places a Pod only where unreserved requests fit. Set requests too low and a node is oversold; too high and capacity sits idle and costs money.
Guaranteed
requests equal limits for every container. Evicted last. Use for payments, databases.
Burstable
requests set below limits (or limits missing). Middle priority. The common default.
BestEffort
no requests or limits at all. Evicted first under node memory pressure. Avoid in production.