Step 01 of 06
Learn the concept
A cluster is just someone else's finite machine, even when the someone is your laptop. Resource settings are how Beacon stops pretending it is the only process with plans.
The ideas this is made of
Requests are scheduling promises
A resource request says how much CPU or memory Kubernetes should reserve when choosing a node. The scheduler sums requests, not live usage. If Beacon requests 128Mi memory, the scheduler looks for a node with that much unrequested memory. This prevents overpacking by wishful thinking, but only if you set requests that resemble reality.
Limits are enforcement, and CPU enforcement is weird
A memory limit is a hard ceiling: exceed it and the kernel can kill the container with OOMKilled. A CPU limit is enforced through CFS quota, which throttles execution during a period. That can add latency to a service that had spare CPU bursts available. Many teams set CPU requests but omit CPU limits for latency-sensitive services.
QoS class affects eviction priority
Kubernetes assigns Guaranteed, Burstable or BestEffort based on requests and limits. Under node pressure, BestEffort Pods are easiest to evict, then Burstable Pods exceeding requests, then Guaranteed Pods. QoS is not a performance tier. It is a survival hint when the node is out of memory or disk.
Pending and OOMKilled name different resource failures
A Pod stuck Pending with Unschedulable failed before running: the scheduler could not find room for its requests or constraints. A Pod with last state OOMKilled did run and exceeded its memory limit. Debug them differently. For Pending, read scheduling Events. For OOMKilled, inspect container state and memory settings.
request: reserve one desk
limit: lock worker to one desk forever
burst: use empty desks during lunch
pressure: send unreserved people home firstRequests help placement. Limits enforce ceilings. CPU ceilings can punish useful bursts, while memory ceilings prevent one process from eating the room.
Requests and limits
| Field | Used by | Failure smell |
|---|---|---|
CPU request | Scheduler, shares | Pending if too high |
CPU limit | Kernel CFS quota | Throttled latency |
Memory request | Scheduler, eviction | Evicted under pressure |
Memory limit | Kernel OOM killer | OOMKilled |
No values | BestEffort QoS | First evicted |
What these are called on the job
Request — The amount of CPU or memory the scheduler uses when placing a Pod.
Limit — The maximum resource use enforced by the node for a container.
OOMKilled — Container termination because it exceeded memory limits or node memory pressure.
QoS class — Kubernetes classification derived from requests and limits, used during eviction decisions.
