kubernetes-sigs / descheduler

Descheduler for Kubernetes
https://sigs.k8s.io/descheduler
Apache License 2.0
4.23k stars 645 forks source link

KEP-1421: Make individual NodeFit predicates configurable #1421

Open ingvagabund opened 1 month ago

ingvagabund commented 1 month ago

Is your feature request related to a problem? Please describe.

The NodeFit predicate was introduced to allow the descheduler to make better decisions about evictions to avoid cases where there's no feasible node for re-scheduling after a pod gets evicted. To enable the predicate, DefaultEvictor plugin provides an optional nodeFit option that each plugin can utilize. The list of existing checks has been extended over time in good faith to improve the eviction decisions. The NodeFit predicate currently consists of the following checks:

Some plugins adopted the NodeFit predicate natively through invocation of additional PodFitsAnyOtherNode, PodFitsAnyNode and PodFitsCurrentNode predicates built on top of NodeFit. Nevertheless, there are cases where it's more preferable to check only a subset of existing checks or disable the checks completely. Which is problematic for such plugins where it's impossible to fully disable the checks.

User stories

Describe the solution you'd like Allow to enable/disable individual checks the NodeFit predicate consists of.

Describe alternatives you've considered TBD through a proposal.

What version of descheduler are you using?

descheduler version: 0.30.z

Additional context