Loading...
Kubernetes' pecking order: which pods keep their resources when a node runs short.
Quick Definition
In Kubernetes, Quality of Service (QoS) classes, Guaranteed, Burstable, and BestEffort, determine how pods are prioritized when nodes run short on resources. QoS, set by resource requests and limits, affects both reliability and how efficiently capacity is used.
Quality of Service, in Kubernetes, is the classification that decides which pods are protected and which are sacrificed when a node runs out of memory. Pods earn one of three classes from how their resources are declared: Guaranteed (requests equal limits), Burstable (requests below limits), and BestEffort (nothing declared).
Under pressure, BestEffort pods are evicted first, then Burstable ones exceeding their requests, while Guaranteed pods are protected. This creates a direct trade between safety and efficiency: Guaranteed pods get full protection but reserve their maximum at all times, while Burstable pods share headroom and pack more cheaply onto nodes at slightly higher eviction risk.
Example. A platform team makes its payment service Guaranteed, its web tier Burstable, and its batch reprocessing BestEffort. During a memory squeeze, batch work pauses, the web tier squeezes slightly, and payments never notice.
Matching QoS class to workload criticality is free reliability engineering and a real cost lever, since Guaranteed-everything forces the largest cluster. The Kubernetes Cost Management Guide and Kubernetes best practices cover the trade-offs.
Critical services Guaranteed, ordinary services Burstable with honest requests, and interruptible batch work BestEffort or low priority.
Effectively yes: reserving maximum capacity at all times means more node capacity purchased for the same workloads.
It appears in the pod's status. The class is derived automatically from how requests and limits are set.