Burstable QoS Pods¶
In Kubernetes, a Burstable QoS Pod is a Pod assigned to the Burstable Quality of Service (QoS) class. This classification is determined by the specific resource requests and limits defined for the containers within the pod^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
A Pod falls into the Burstable category if it meets the following two conditions^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md]:
- It is not a Guaranteed Pod (meaning
requestandlimitvalues are not identical for CPU and Memory). - At least one container within the Pod has set a specific
requestfor either memory or CPU^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
Characteristics¶
The defining feature of a Burstable Pod is that it has a minimum resource guarantee but is allowed to use more resources when capacity is available on the node^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md]. This occurs because the limit (the maximum allowed usage) is set higher than the request (the reserved amount).
Eviction and Priority¶
Kubernetes uses the QoS class to determine the order in which pods are terminated when the system is under resource pressure (e.g., memory or CPU starvation)1.
- Lower Priority: Burstable pods have a lower priority compared to Guaranteed pods.
- Higher Priority: Burstable pods have a higher priority compared to BestEffort pods.
Consequently, when the system is low on resources, the cluster will prioritize killing Burstable pods before Guaranteed pods. However, they will only be targeted after all available BestEffort pods have been cleaned up^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
Example¶
The following manifest demonstrates a configuration that results in a Burstable classification. The container requests 100Mi of memory but is limited to 200Mi, meaning it is guaranteed 100Mi but can burst up to 200Mi if the node has free resources^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
apiVersion: v1
kind: [Pod](<./pod.md>)
metadata:
name: qos-demo-2
namespace: qos-example
spec:
containers:
- name: qos-demo-2-ctr
image: nginx
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
Related Concepts¶
- Kubernetes
- Guaranteed QoS Pods
- BestEffort QoS Pods
- [[Resource Requests and Limits]]
Sources¶
- 400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md
-
This behavior is distinct from BestEffort QoS Pods, which are the first to be killed, and Guaranteed QoS Pods, which are the last. ↩