-
Notifications
You must be signed in to change notification settings - Fork 204
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
Allow tainting Nodes even when blocker Pods exist #970
Comments
Hi @yaraskm, |
Hi @ckotzbauer , I don't think this should be closed. I'm using the flag What I'm proposing is either:
|
I've created a draft PR for the behaviour change I'm suggesting: #971 |
I've been running my PR in our clusters for the past week and it's working as planned. Now, nodes get tainted when they need a reboot, regardless of whether there are blocking Pods or not. |
I'm proposing an optimization that should help a cluster perform a full reboot faster when there are blocker conditions.
Currently, the logic is as follows when using both
--blocking-pod-selector
and--prefer-no-schedule-taint
:By this point, we know that the Node requires a reboot, but if a blocker exists (e.g. Prometheus alert is firing or Pods exist on the node that match the blocking selector), the main loop will just go back to sleep and wait for the next tick without tainting the node. The problem here though is that more blocker Pods could be scheduled to this node while we wait for the next tick cycle to happen, meaning that it could take an extensively long period before the Node happens to be free of blocker Pods and can be rebooted.
My proposal is to add a flag so that Nodes will be tainted as
PreferNoSchedule
as soon as they're detected as requiring a reboot, then the block checker can continue as normal. This way, there is a high chance that blocker Pods will schedule on other nodes instead, as long as the scheduler can accommodate them somewhere else. Once all of the blocking conditions have cleared, the Node will reboot as normal.I'm happy to submit a PR to create this flag if it's agreed to!
The text was updated successfully, but these errors were encountered: