-
Notifications
You must be signed in to change notification settings - Fork 669
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add strategy defaults and fix nodeFit for node affinity strategy #793
Conversation
Welcome @uniemimu! |
Hi @uniemimu. 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 Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@bart0sh: Cannot trigger testing until a trusted user reviews the PR and leaves an In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/ok-to-test
Nit for self, and for conversation: PodFitsAnyNode has no users anymore if this gets merged. Should it be removed at the same time? |
Squashed and cleaned. Sorry for the slipped in hacks in the intermediates. |
/retest |
1 similar comment
/retest |
@uniemimu thanks for keeping the defaulting in mind. As part of moving to the descheduling framework, this becomes part of the core changes in the code base after all plugins are migrated to plugins. |
This adds defaults for strategies. Now each strategy may have different default parameters, if some are omitted from the configmap. Since the NodeFit parameter was a bool instead of a pointer, it couldn't be detected whether it was being set in the configmap, or not. Hence it is changed to a pointer. If it is not set in the configmap, the default is taken. Except for node affinity, all other strategies are now having a default of false for an omitted NodeFit parameter, which matches exactly how things have worked. For the node affinity strategy, the legacy mode of operation has always been what a "true" NodeFit would be. Thus an omitted NodeFit parameter for that strategy is set to true, which matches how node affinity has been working, effectively not evicting anything if the pod doesn't fit into another node. The change is in how things work when the NodeFit is explicitly set to "false". The hard-coded check for pod fitting any node is removed, and the NodeFit feature has control. NodeFit being false, node affinity strategy will evict the pod regardless of whether there is another node where it would fit. Signed-off-by: Ukri Niemimuukko <ukri.niemimuukko@intel.com> pkg/descheduler/strategies/nodeutilization/highnodeutilization.go pkg/descheduler/strategies/nodeutilization/lownodeutilization.go
Ok please let me know if this is worth rebasing on top of some WIP PR which is considered better off going in first. |
@uniemimu: PR needs rebase. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
@uniemimu: The following tests failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
The Kubernetes project currently lacks enough active contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /close |
@k8s-triage-robot: Closed this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
This adds defaults for strategies. Now each strategy may have
different default parameters, if some are omitted from the configmap.
Since the NodeFit parameter was a bool instead of a pointer, it
couldn't be detected whether it was being set in the configmap, or
not. Hence it is changed to a pointer. If it is not set in the
configmap, the default is taken.
Except for node affinity, all other strategies are now having a
default of false for an omitted NodeFit parameter, which matches
exactly how things have worked.
For the node affinity strategy, the legacy mode of operation has
always been what a "true" NodeFit would be. Thus an omitted NodeFit
parameter for that strategy is set to true, which matches how
node affinity has been working, effectively not evicting anything
if the pod doesn't fit into another node.
The change is in how things work when the NodeFit is explicitly set
to "false". The hard-coded check for pod fitting any node is removed,
and the NodeFit feature has control. NodeFit being false, node
affinity strategy will evict the pod regardless of whether there is
another node where it would fit.
Fixes #640
Signed-off-by: Ukri Niemimuukko ukri.niemimuukko@intel.com