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
NodeAffinity/NodeUnschedulable QueueingHint may miss Node related events that make Pod schedulable #122284
Comments
@sanposhiho: The label(s) 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. |
/priority critical-urgent |
/cc @kubernetes/sig-scheduling-leads |
Wait... It's the same for NodeUnschedulable. I should have noticed during the review 🤦 /retitle NodeAffinity/NodeUnschedulable QueueingHint may miss Node related events that make Pod schedulable |
/assign @wackxu |
@sanposhiho The release cut is under progress, are we reverting #119396 and #119155? |
@Vyom-Yadav
But, unfortunately, I suppose our leads are not around, they're all in US timezone and it's late night now. |
All node related plugins are influenced. |
Yes, I just went through all, and seems these two are the only ones that has got QHint in the last release. Other QHints:
|
Wait... I think #109437 has been silently coming back since it's closed. (We should have mentioned it in the comment somewhere...) |
If you mean the newly added plugins like the DRA, I think yes, let me check that in. |
Yes, I meant that. For newly added plugins like DRA, they have NodeAdd, but not NodeUpdated. |
We discussed at slack: And decided we'll make the feature gate for QHint disable by default. (There was a discussion of disablement for this before actually because we observed a memory consumption issue: #120622) This issue reinforces that idea. We'll make it enable by default once all issues here + memory consumption issue are addressed. |
Also, one general problem is that we have few integration (or e2e) tests for requeueing scenario. |
Related problems we faced now:
To the 2nd question, a feasible approach is only check the newObj (we're now validating the oldObj and newObj both, only the oldObj doesn't match but the newObj does, then we'll return |
Regarding (3), what do you think about this idea: when plugins register |
The action items in my mind (correct me if I am mistaken or missed something.)
I'll probably create other issues corresponding to them, not to put a lot of context in this issue later. |
What I hope is we can have a quick fix for No.3 and cherry-picked, then let's work out the whole stuff in the next release, no longer need to patch anything additionally, and longer. |
Let's make it a requirement to increase integration coverage of requeuing before re-enabling the feature again. |
I created the issues based on the above checklist #122284 (comment)
@wackxu @carlory
Other things, memory consumption issue and the removal of preCheck are already tracked: |
@sanposhiho here's the re-implementation of the NodeAffinity plugin, please take a look. |
Reverting is done and we have issues for other action items, I believe we can close it. /close |
@sanposhiho: Closing this issue. 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. |
@sanposhiho do you want (or already have) to create an umbrella issue tracking all on-going items to re-enable QueueingHint feature. In particular, we don't really want to re-stomp on issue like #109437. |
We have all issues individually, but don't have ☔ one. Let me create it for a better tracking. |
#122597 |
What happened?
/kind bug
/triage accepted
/priority urgent
/sig scheduling
/assign
NodeAffinity QueueingHint may miss Node related events that make Pod schedulable because of preCheck.
It's similar to: #119177 (comment)
So:
In such scenarios, NodeAffinity may return
QueueSkip
to the event due to (2).https://github.com/kubernetes/kubernetes/blob/master/pkg/scheduler/framework/plugins/nodeaffinity/node_affinity.go#L94-L131
What did you expect to happen?
We have to loosen the filtering in
isSchedulableAfterNodeChange
until preCheck is removed.#110175
How can we reproduce it (as minimally and precisely as possible)?
It may cause the above problematic scenario.
Anything else we need to know?
No response
Kubernetes version
master
Cloud provider
OS version
Install tools
Container runtime (CRI) and version (if applicable)
Related plugins (CNI, CSI, ...) and versions (if applicable)
The text was updated successfully, but these errors were encountered: