Kubernetes Burstable QoS¶
Kubernetes Burstable QoS (Quality of Service) is a scheduling class assigned to Pods that do not meet the stricter criteria for "Guaranteed" or "BestEffort" tiers.^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
To be classified as Burstable, a Pod must satisfy two specific conditions^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]:
- The Pod is not a Guaranteed Pod (meaning
requestsdo not equallimitsfor all resources in all containers). - At least one container within the Pod sets a
memoryorcpurequest.
Characteristics¶
Burstable Pods function with a "minimum resource guarantee."^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md] This means they are allocated a specific baseline of resources defined by their requests, ensuring they have a reserved amount of computing power available to them.^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
However, this class also allows for flexibility. When system resources are abundant and available, Burstable Pods are permitted to consume resources beyond their requests up to their defined limits (or node capacity if no limit is set).^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
Resource Usage and Priority¶
In the Kubernetes hierarchy, Burstable Pods sit between BestEffort and Guaranteed.^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
- Under Pressure: If the cluster runs out of resources and there are no BestEffort Pods to evict, Burstable Pods become the first targets for termination.^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
- Resource Access: Unlike BestEffort Pods (which have no guarantees) or Guaranteed Pods (which have fixed amounts), Burstable Pods have the distinct ability to "burst" and use extra resources when the node has idle capacity.^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
Example Configuration¶
The following YAML snippet demonstrates a configuration that results in a Burstable classification^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]:
apiVersion: v1
kind: [Pod](<./pod.md>)
metadata:
name: qos-demo-2
spec:
containers:
- name: qos-demo-2-ctr
image: nginx
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
In this example, the Pod is Burstable because the request (100Mi) is less than the limit (200Mi), meaning it is not Guaranteed, but it does have a request set.^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]
Related Concepts¶
Sources¶
^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]