Pod priority is a new resource in Kubernetes that allow you to interfere with how pods are scheduled. It was added back in v1.8 and is currently in the beta phase of kubernetes version 1.11. The idea of pod priority is simple. It allows us to basically give preferential treatment to specified or selected applications. The selection is made by the cluster administrator
For example, if compute resources are exhausted in the cluster and the pod assigned a high priority needs to be scheduled, the scheduler will evict pods from the cluster to accommodate the application with highest priority.Pod priority affects the scheduling order of pods in the cluster based on how priority is set. Pods are either preempted or evicted by the scheduler when making priority decisions.
When a pod is giving a priority higher than that of other pods in the cluster, the scheduler makes sure that at all times when that pods needs to be scheduled it will always be first on the scheduling queue regardless of other pods pending prior to its creation.
To assign pod priority, a priority class object needs to be created and then referenced in the podspec of the pod that needs to be assigned a priority. Here is a sample on how to create a pod priority class object:
Kind: PriorityClass apiVersion: scheduling.k8s.io/v1alpha1 metadata: name: high-priority-app value: 999999 globalDefault: false description: "priority for critical apps"
next we create the pod that uses the priority class object
apiVersion: v1 kind: Pod metadata: name: pod-example spec: containers: - name: nginx image: nginx PriorityClassName: high-priority-app