-
Notifications
You must be signed in to change notification settings - Fork 408
feat: move marking for disruption before validation #2724
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
base: main
Are you sure you want to change the base?
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: ryan-mist The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Hi @ryan-mist. Thanks for your PR. I'm waiting for a github.com 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. DetailsInstructions 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-sigs/prow repository. |
f2c1db0 to
9381608
Compare
f89c578 to
cf25e18
Compare
|
I'm curious if there's a larger proposal about this since this seems like a fairly significant change -- won't this cause a bunch of overlaunching and sort of nullifies the validation behavior of consolidation (since no more pods will schedule to the node if it's already marked with a NoSchedule taint). I require there being conversation about using a PreferNoSchedule for this here but NoSchedule feels like it removes the ability to do proper checking that the consolidation should actually be performed. FWIW, I feel like if we are making this change, we should just remove the time-based validation altogether since it will be doing effectively nothing at this point. |
|
Can you link the race condition you are referring to from an issue? |
|
It shifts the main intention of validation from detecting cluster churn to catching this race condition. It does still "catch" cluster churn between our decision and taint application, but this is a smaller window than before. The idea is that
We may not need to revalidate the command, since the window for pods to be scheduled on the node from the original simulation to tainting the Node is small. We do need the time-based validation to check that no pods with the |
e23ce52 to
6ece54c
Compare
6ece54c to
2bb0d12
Compare
Pull Request Test Coverage Report for Build 20469504972Details
💛 - Coveralls |
Fixes #N/A
Description
We see the following race condition with todays consolidation workflow:
karpenter.sh/disrupted:NoScheduledo-not-disruptannotation to the node.This PR moves tainting before validation to catch this race condition.
This PR shifts the main intention of validation from detecting cluster churn to catching this race condition. The idea is that
consolidateAfterworks to similar affects as the original intention of validation since the Node cannot be consolidated for a period of time after a pod is removed (or added). For this reason, we also drop validation of re-running the scheduling simulation.Old Disruption Order:
New Disruption Order:
How was this change tested?
make presubmitBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.