Quality of Service (QoS) class to determine which pod to kill first in Kubernetes
The request is a resource that the container is guaranteed to get and the limit is a resource that the container gets max
When pods on the node try to utilize resources that are not available on the node, Kubernetes uses the QoS class to determine which pod to kill first
1) Best effort:
Your pod gets the best-effort class if you do not specify any CPU/Memory requests and limits. Best-effort pods are low-priority pods. The best-effort pods get killed first if the node runs out of resources.
2) Burstable:
If you set the request lower than the limit, the pod gets burstable class.
If the node runs out of resources, burstable pods get killed if no best
effort pods are available.
3) Guaranteed:
The pod gets a guaranteed class if the request and limit values are the same. It is considered the highest priority pod and gets killed if there are no best-effort or burstable pods.
3) Guaranteed:
The pod gets a guaranteed class if the request and limit values are the same. It is considered the highest priority pod and gets killed if there are no best-effort or burstable pods.
Kubernetes scheduler schedules pod based on their QoS class values. QoS class of a pod is assigned by its resource limits and requests definitions of containers. These classes have impacts on the resource utilization of nodes. In order to utilize available resources efficiently, they must be considered.