Skip to content

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]:

  1. The Pod is not a Guaranteed Pod (meaning requests do not equal limits for all resources in all containers).
  2. At least one container within the Pod sets a memory or cpu request.

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]

Sources

^[400-devops-06-kubernetes-k8s-ithelp-day21-readme.md]