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
NodeFit doesn't skip checking of resources which are configured as ignoredByScheduler #863
Comments
The generic approach discussed in #640 (comment) |
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 |
The Kubernetes project currently lacks enough active 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 rotten |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /close not-planned |
@k8s-triage-robot: Closing this issue, marking it as "Not Planned". 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. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues. This bot triages un-triaged issues 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 contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues. This bot triages un-triaged issues 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 issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /close not-planned |
@k8s-triage-robot: Closing this issue, marking it as "Not Planned". 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. |
What version of descheduler are you using?
descheduler version: latest sources as of the date of filing this
Pods which get scheduled through scheduler extender(s) by using related resources configured as ignoredByScheduler, will not work properly with the Descheduler NodeFit -feature, which doesn't understand that the related resources should be ignored also by the Descheduler, when considering Pod fitting a node based on its resource requests.
Ref: https://kubernetes.io/docs/reference/config-api/kube-scheduler-config.v1beta2/#kubescheduler-config-k8s-io-v1beta2-Extender
Says:
Given that calls to the NodeFit function are baked in the node-affinity strategy and thus are always called if that strategy is needed, avoiding the issue is rather impossible by attempts at disabling NodeFit. And of course, disabling NodeFit would only be a workaround anyhow. The resource checks can be valuable, just that not all resources should be treated equal.
So even if the scheduler is configured to skip said resources in its checks, the descheduler however will not skip checking the resource(s) in its predicates, because it has no knowledge of the kube-scheduler configuration. See the comment in function PodRequestsAndLimits:
descheduler/pkg/utils/pod.go
Line 145 in d889763
In the end then, what happens is that NodeFit will always consider these pods as not fitting anywhere, as the resource merely exists in the Pod spec to indicate that some scheduler extender should be called when scheduling is done. Nodes don't have the resource.
Ideally, the descheduler would automatically mimic the skipping of checks for those same resources. Alternatively, it would at least allow for specifying its own list of resources to be skipped, so that the user could force things to match between the scheduler, and the descheduler.
The text was updated successfully, but these errors were encountered: