kubernetes-sigs / descheduler

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

Option for LowNodeUtilization and HighNodeUtilization for node regex name filtering #1389

Closed Fran-Rg closed 2 months ago

Fran-Rg commented 2 months ago

Is your feature request related to a problem? Please describe. Not a problem but I know some nodes don't need to be touched, so I would like them excluded by name

Describe the solution you'd like An option in the LowNodeUtilization and HighNodeUtilization to filters to include and exclude some node names based on a list. If include is defined, only check the listed nodes, and if excluded is defined, to not check the excluded nodes. Best if the name format could use regex.

Describe alternatives you've considered evictableNamespaces option but it's more complex that way

What version of descheduler are you using?

descheduler version: v0.29.0

Additional context None

damemi commented 2 months ago

Hi @Fran-Rg, have you tried setting a node selector on the evictor? https://github.com/kubernetes-sigs/descheduler?tab=readme-ov-file#evictor-plugin-configuration-default-evictor wondering if that's sufficient or you hit problems with it

Fran-Rg commented 2 months ago

I didn't know but unfortunately without wildcards support or negative selection then it would still not work in my case. Also it doesn't look specified but I'll assume this node selector is done via label key=value, right?

damemi commented 2 months ago

NodeSelectors are just like label selectors afaik, which do have negative selection and set-based syntax: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

Not sure about wildcard, but have you considered using node labels instead of relying on node name? That's generally the appropriate approach for something like this