-
Notifications
You must be signed in to change notification settings - Fork 136
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
docs: RFC for disruption.terminationGracePeriod feature #834
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: wmgroot 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 |
Welcome @wmgroot! |
Hi @wmgroot. 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. |
b015c5c
to
0ab6f41
Compare
/test ls |
@jackfrancis: The specified target(s) for
Use 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. |
/test pull-karpenter-test-1-26 |
/test pull-karpenter-test-1-29 |
@wmgroot: 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. |
@wmgroot thank you for letting me pollute your PR thread w/ some prow tests, just testing out some recent additions, nothing for you to worry about here :) |
DESCRIPTION: | ||
NodeDrainTimeout is the total amount of time that the controller will spend | ||
on draining a node. The default value is 0, meaning that the node can be | ||
drained without any time limitations. NOTE: NodeDrainTimeout is different |
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.
This NOTE
suggests that there has been some confusion with this semantic. Any learnings here @jackfrancis?
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.
Nice design! Thanks for writing this out. Eager to talk more about this.
with caution. | ||
``` | ||
|
||
It might sufficient to skip straight to termination of the node at the cloud provider rather than waiting for a successful force drain to complete. |
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.
The problem with this is similar to #655. You'll get leaked pods, which is a hefty consideration if we decide to go this way.
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.
I'm not sure how best to address this problem for daemonset pods which often tolerate all taints. I think we can attempt a force drain for non-daemonset pods as described in the spec, but would need to rely on full termination in the cloud provider for the remaining edge cases.
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.
Daemonsets tolerating all taints I see as a separate issue. Many daemonsets do this because it's the easiest way to ensure that the pods are running as long as possible, without having to think about all the different addons that may add taints. Whichever ones terminate all taints will either need to be okay with being leaked or we may need to respect their terminationGracePeriodSeconds as well.
0ab6f41
to
e75de87
Compare
7186d87
to
ddd9d38
Compare
consolidationPolicy: WhenUnderutilized || WhenEmpty | ||
consolidateAfter: 10m || Never # metav1.Duration | ||
expireAfter: 10m || Never # Equivalent to v1alpha5 TTLSecondsUntilExpired | ||
terminationGracePeriodSeconds: 86400 || 24h || nil |
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.
if we are specifying seconds we shouldn't allow 24h?
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.
Yeah, you're correct. I'm going to update it to support standard duration formats for convenience so we don't have to google how many seconds are in a day all the time.
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.
What about terminationGracePeriodDuration? Would make it easier to do the thing you're trying to do.
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.
I think I slightly prefer terminationGracePeriod
just for brevity, but I don't have very strong opinions.
Sounds good to me. We should be able to work on the implementation details in parallel since switching between NodePool vs NodeClaim spec is a fairly trivial part of the actual implementation. |
a2cd377
to
d4ad3c2
Compare
d4ad3c2
to
6a4ac94
Compare
This PR has been inactive for 14 days. StaleBot will close this stale PR after 14 more days of inactivity. |
This PR has been inactive for 14 days. StaleBot will close this stale PR after 14 more days of inactivity. |
cc: @akestner |
This PR has been inactive for 14 days. StaleBot will close this stale PR after 14 more days of inactivity. |
This PR has been inactive for 14 days. StaleBot will close this stale PR after 14 more days of inactivity. |
/assign @jmdeal |
This PR has been inactive for 14 days. StaleBot will close this stale PR after 14 more days of inactivity. |
/remove-lifecycle stale |
This PR has been inactive for 14 days. StaleBot will close this stale PR after 14 more days of inactivity. |
/remove-lifecycle stale |
Design for #743
Implementation PR: #916
Description
RFC for support for
disruption.forceDrainAfter
(nodeDrainTimeout)By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.