Closed jordipiqueselles closed 11 months ago
Hi @jordipiqueselles. Thanks for your PR.
I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test
on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test
label.
I understand the commands that are listed here.
@a7i @ingvagabund Could you review this PR? Thanks!
/ok-to-test
/cc @knelasevero
Thank you @jordipiqueselles this is a great addition!
/lgtm
/label tide/merge-method-squash
Thanks for this!
/approve
[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: knelasevero
The full list of commands accepted by this bot can be found here.
The pull request process is described here
Now, the descheduler can detect and evict pods that are not optimally allocated according to the "preferred..." node affinity. It only evicts a pod if it can be scheduled on a node that scores higher in terms of preferred node affinity than the current one.
This can be activated by enabling the RemovePodsViolatingNodeAffinity plugin and passing "preferredDuringSchedulingIgnoredDuringExecution" in the args.
For example, imagine we have a pod that prefers nodes with label "key1: value1" with a weight of 10. If this pod is scheduled on a node that doesn't have "key1: value1" as label but there's another node that has this label and where this pod can potentially run, then the descheduler will evict the pod.
Another effect of this commit is that the RemovePodsViolatingNodeAffinity plugin will not remove pods that don't fit in the current node but for other reasons than violating the node affinity. Before that, enabling this plugin could cause evictions on pods that were running on tainted nodes without the necessary tolerations.
This commit also fixes the wording of some tests from node_affinity_test.go and some parameters and expectations of these tests, which were wrong.