Taint Based Evictions was introduced as an alpha feature in Kubernetes 1.6 and was promoted to
beta in 1.13. The feature automatically taints nodes with NoExecute
when they become unready or
unreachable.
The TaintNodesByCondition feature has worked to ensure nodes are tainted with NoSchedule
effect
upon different node conditions. However, it's also required to taint nodes with NoExecute
automatically
upon some node conditions such as node gets not ready or unreachable.
Ensure nodes are tainted properly with a NoExecute effect when it's not ready or unreachable, so that scheduler can use taints to make scheduling decisions consistently.
It is not the goal of taint based evictions to make any scheduling or removal decisions for pods, but rather
to monitor the nodes and ensure that the proper NoExecute
effect is applied.
Ensure test coverage is sufficient.
Update feature gate logic around Taint Based Evictions to enable it by default.
Update documentation to reflect the status of the feature.
There is no proposed change to the functionality of this feature, and it has functioned well since its promotion to beta in 1.13, so no risks are expected.
- The feature has been stable and reliable in the past several releases.
- Adequate documentation exists for the feature.
- Test coverage of the feature is acceptable. This includes moving existing tests to be under the appropriate sigs.
Taint based evictions is comprised of node lifecycle functions taints and evictions, as well as the feature itself, all of which have stable unit, e2e, and integration tests that are run regularly as part of the Kubernetes CI/CD pipeline.
- Taint based evictions integration test (note that prior to 1.17, this test existed as an end-to-end test
The original implementation of taint based evictions predates the KEP process, so discussion on it can be found here: #166