Pod Priority and Preemption are features introduced in Kubernetes 1.8 as alpha features and promoted to beta in 1.11. Pod Priority enables users to specify importance of a Pod. Pods with higher priority are scheduled ahead of other pods with lower priority. When a cluster does not have enough capacity for running a high priority pod, the scheduler preempts and removes lower priority pods in order to make room for the high priority pod.
Pod Priority and Preemption have existed in the past several releases and some of our most critical components of Kubernetes, i.e. critical DaemonSet Pods, rely on this feature for guaranteed scheduling since Kubernetes 1.12.
Promote Pod Priority and Preemption to GA.
Make any change of functionality to the features.
Create scheduling.k8s.io/v1
API group and add PriorityClass
to it.
Make necessary changes to our code base to use scheduling.k8s.io/v1
instead of
scheduling.k8s.io/v1beta1
.
Update our documentation to reflect the new version and status of the features.
Given that there is no functionality changes, we don't expect any logical errors caused by this change.
- The features have been stable and reliable in the past several releases.
- Adequate documentation exists for the features.
- Test coverage of the features is acceptable.
Pod priority and preemption have unit, integration, and e2e tests. These tests are run regularly as a part of Kubernetes presubmit and CI/CD pipeline.
Here is a list of unit tests for various modules of the feature:
- Priority admission controller tests
- Priority aware scheduling queue tests
- Scheduler preemption tests. This file includes other tests too.
Integration tests for priority and preemption are found here.
End to end tests for priority and preemption are found here.
Pod Priority and Preemption are tracked as part of enhancement#564. The proposal for Pod Priority can be found here and Preemption proposal is here.