KEP-3902keps/sig-scheduling/3902-decoupled-taint-manager
Decouple TaintManager from NodeLifeCycleController
In Kubernetes, NodeLifecycleController applies predefined NoExecute taints (e.g., Unreachable, NotReady) when the nodes are determined to be unhealthy. After the nodes get tainted, TaintManager does its due diligence to start deleting running pods on those nodes based on NoExecute taints, which can be added by anyone. In this KEP, we propose to decouple Tai… Full summary
In Kubernetes, NodeLifecycleController applies predefined NoExecute taints (e.g., Unreachable, NotReady) when the nodes are determined to be unhealthy. After the nodes get tainted, TaintManager does its due diligence to start deleting running pods on those nodes based on NoExecute taints, which can be added by anyone. In this KEP, we propose to decouple TaintManager that performs taint-based pod eviction from NodeLifecycleController and make them two separate controllers: NodeLifecycleController to add taints to unhealthy nodes and TaintEvictionController to perform pod deletion on nodes tainted with NoExecute effect. This separation not only improves code organization but also makes it easier to improve TaintEvictionController or build custom implementations of the taint based eviction.
Facts
- Tracking issue
- #3902(opens GitHub in a new tab) closedcompletedclosed 2025-09-19 08:20 UTCmilestone v1.34sig/appssig/nodesig/schedulingstage/stable
- Milestones
- beta v1.29stable v1.34
- Feature gates
- SeparateTaintEvictionController
- Created / last updated
- 2023-03-07 / none