-
Notifications
You must be signed in to change notification settings - Fork 14.6k
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
Add node lifecycle documentation #45074
Comments
@thockin: This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the The 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. |
/cc |
Once that's stated, consider transferring the issue to k/website to track putting that detail in the public docs. /kind documentation |
A bit related: am I right that the Cluster Autoscaler is using an unregistered taint - not listed in https://kubernetes.io/docs/reference/labels-annotations-taints/ - for marking node drains? |
Right now there's no autogeneration for https://kubernetes.io/docs/reference/labels-annotations-taints/ Autogenerated pages should have a footer to mark this, eg see https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/ (related to your question, @thockin , I've considered making each entry be its own source file, which might be relevant to any future thoughts on more automation) |
Can we document CA taints on that website given they don't follow |
The usual approach is two phase:
|
That makes sense, created kubernetes/autoscaler#5433 to track this. |
Re: source control for annotations - I think we should have a git repo
whose sole purpose is to catalog these things with metadata that is both
human and machine-friendly to and can be the source of truth for pages like
this.
We have something internal to Google which track our own annotations and so
forth. Interested?
…On Thu, Jan 19, 2023, 12:41 AM Tim Bannister ***@***.***> wrote:
Right now there's no autogeneration for
https://kubernetes.io/docs/reference/labels-annotations-taints/
Autogenerated pages should have a footer to mark this, eg see
https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/
(related to your question, @thockin <https://github.com/thockin> , I've
considered making each entry be its own source file, which might be
relevant to any future thoughts on more automation)
—
Reply to this email directly, view it on GitHub
<#45074>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABKWAVGYALYQ23NYMHYURE3WTD42HANCNFSM6AAAAAAT6IPH7U>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
/cc |
FWIW, Karpenter currently puts a finalizer on nodes and uses that to allow users to control the node by just deleting it. We've had some discussions on if this is a good pattern and would welcome an official pattern recommendation. |
/sig docs too |
We've been reverse engineering node lifecycle assumptions for the past 2 years in https://github.com/aws/karpenter. Some hiccups we've had:
I'd love to come together with the group and sort out some of the painpoints, and find a path forward that simplifies and documents node lifecycle assumptions. I'm not confident that a shutdown taint is the right direction. |
What should the kubelet do if it observes its Node being deleted? (eg: stop all local Pods, remove the kubelet's finalizer, quit) |
Hi @ellistarn , I'm considering adding something like |
Not that I'm aware of @kerthcet. The problem is more that add-ons like cilium use a custom taint to communicate node readiness to the kube scheduler, on top of existing node readiness mechanisms. |
One thing to highlight is that: we can add some resources like labels/taints before running the job, after success, we can remove them if you want, I suppose cilium use a custom taint only in initializing, is that right? @ellistarn |
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 |
/retitle Add node lifecycle documentation I think the primary audience is contributors and cluster operators are a key secondary audience. Have I got that right? |
I would say direct contributors, and ecosystem contributors. E.g. if you develop some monitoring tool, you probably deeply care about this topic as well. |
long-term-issue (note to self) |
Decouple TaintManager from NodeLifecycleController enhancements#3902 may be in scope of this issue. |
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 |
/transfer website |
/remove-lifecycle stale |
/priority important-longterm |
cc/ @wangzhen127 Can you work with @sftim and others on this? |
Sure. I am still ramping up in this space. Will follow up. |
The SIG to work with is SIG Docs (#sig-docs in Kubernetes' Slack workspace). |
#45197 has helped with this |
@wangzhen127 what help would you like here? |
As far as I can tell, we don't have a comprehensive doc which covers the expected lifecycle of nodes in Kubernetes.
Specifically, we have lots of intersecting, async things which involve nodes. For example:
For an example of things that I think are "weird" for lack of docs, look at kubernetes/autoscaler#5201 (comment) . ClusterAutoscaler defines a taint which it uses to prevent work from landing on "draining" nodes (even though we have the
unschedulable
field already). The service LB controller currently uses that taint to manage LBs. Cluster autoscaler removes the VM from the cloud, and leaves the Node object around for someone else to clean up.The discussion is about the MEANING of the taint, when it happens, and how to be more graceful. What we want is a clear signal that "this node is going away" and a way for 3rd parties to indicate they have work to do when that happens. It strikes me that we HAVE such a mechanism - delete and finalizers. But CA doesn't do that. I don't know why, but I suspect there are reasons. Should it evolve?
I'd like to see a sig-node (or sig-arch?) owned statement of the node lifecycle. E.g. if the "right" way to signal "this node is going away" is to delete the node, this would say that. Then we can at least say that we think CA should adopt that pattern. If we think it needs to be more sophistacted (aka complicated) then we should express that.
The text was updated successfully, but these errors were encountered: