Kubernetes QoS Burstable Class¶
Kubernetes QoS Burstable is one of the three Quality of Service (QoS) classes assigned to a Pod based on its configured resource requests and limits.^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md]
This QoS class is designed for workloads that typically require a small amount of resources but may need to burst to higher levels when spare capacity is available.
Definition and Conditions¶
A Pod is classified as Burstable if it meets the following conditions^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md]:
- It is not a Guaranteed Pod (meaning it does not have
request == limitfor CPU and Memory for all containers). - At least one container within the Pod has set a specific
requestfor memory or CPU.
In practice, this is the most common configuration for applications, as it allows the scheduler to place the Pod based on a baseline requirement (request) while allowing it to consume more resources up to a defined ceiling (limit) when the node is underutilized^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
Example Configuration¶
The following manifest demonstrates a Pod configuration that results in a Burstable QoS class^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md]. Here, the container requests 100Mi of memory but is allowed to burst up to 200Mi.
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-2
namespace: qos-example
spec:
containers:
- name: qos-demo-2-ctr
image: nginx
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
To verify the assigned class, you can inspect the Pod's status:
[kubectl](<./kubectl.md>) get pod qos-demo-2 --output=yaml
The output will contain qosClass: Burstable in the status section^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
Resource Behavior and Implications¶
The Burstable class represents a balance between resource utilization and stability^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
- Minimum Guarantee: The Pod is guaranteed the amount of resources specified in the
request. The Kubernetes scheduler uses this value to ensure the node has enough capacity to run the Pod^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md]. - Bursting: If the node has unused resources available, the Pod is allowed to consume resources up to its
limit(or higher if no limit is set)[^inferred]. - Eviction Priority: In terms of system stability and OOM (Out of Memory) handling, Burstable Pods have a lower priority than Guaranteed Pods.
- They are protected compared to BestEffort Pods (which have no requests and are the first to be killed)[^inferred].
- However, if system memory is insufficient and no BestEffort Pods exist, Burstable Pods become the targets for eviction to reclaim resources^[400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md].
Related Concepts¶
- [[Kubernetes QoS Guaranteed]]
- [[Kubernetes QoS BestEffort]]
- Kubernetes Resource Requests and Limits
Sources¶
400-devops__06-Kubernetes__k8s-ithelp__Day21__README.md