kubernetes / kubeadm

Aggregator for issues filed against kubeadm
Apache License 2.0
3.75k stars 713 forks source link

rename "node-role.kubernetes.io/master" #2200

Closed neolit123 closed 1 year ago

neolit123 commented 4 years ago

KEP: http://git.k8s.io/enhancements/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint/README.md https://github.com/kubernetes/enhancements/issues/2067

## Design Details

The process will be broken into multiple stages:
- First - 1.20
- Second - Minimum deprecation period for GA features is 1 year.
Estimated 1.24, but may depend on user feedback.
- Third - one release after Second
- Fourth - one release after Third

### Renaming the "node-role.kubernetes.io/master" Node label

First stage:
- Introduce the "node-role.kubernetes.io/control-plane" label in parallel to
the "master" label.
- Announce to users that they should adapt to use the new label.

Second stage:
- Remove the "master" label and announce it to the users.

### Renaming the "node-role.kubernetes.io/master" Node taint

First stage:
- Introduce the "node-role.kubernetes.io/control-plane:NoSchedule" toleration
in the CoreDNS Deployment of kubeadm.
- Announce to users that they should do that same for their workloads.

Second stage:
- Add the "node-role.kubernetes.io/control-plane:NoSchedule" taint to Nodes.

Third stage:
- Remove the "node-role.kubernetes.io/master:NoSchedule" taint from Nodes.

Fourth stage:
- Remove the "node-role.kubernetes.io/master:NoSchedule" toleration in the CoreDNS
Deployment of kubeadm
- Announce to users that they should remove tolerations for the "master" taint in
their workloads.

1.20

1.24

1.25

1.26

old issue description text:

in the kubeadm meeting of 24.06.2020 we discussed the rename of the kubeadm "master" taint/label: https://docs.google.com/document/d/1ONcoy8bOw8SWPUwXxnKeRZST3lnUxYpUv4Y6466h9Ek/edit# https://youtu.be/tycqyzrkUr8

a new k8s working group is being created to oversee the removal of offensive language in k8s. kubeadm as part of the ecosystem must comply: https://github.com/kubernetes/community/pull/4884

remaining usage of "master" and other offensive language in kubeadm:

timeline (TO BE DEFINED):

replacement name (TO BE DEFINED):

action items before the work starts:


please subscribe to this ticket for updates.

sftim commented 4 years ago

How about adding the new label to https://kubernetes.io/docs/reference/kubernetes-api/labels-annotations-taints/ ?

neolit123 commented 4 years ago

not long ago these labels were made deployer specific and we cannot add them as part of the core API docs: https://github.com/kubernetes/enhancements/blob/143c03f0af52c47eab48ec54144dab6bcc86c98d/keps/sig-architecture/2019-07-16-node-role-label-use.md#use-of-node-rolekubernetesio-labels

sftim commented 4 years ago

The website documents more than the core API, and the point of the language seems like a good point to reconsider what's documented.

As I understand it, that KEP strongly advocated for writing sample manifests and other documentation that relies on these labels being used. I'd expect that documenting the existence of that label, with caveats, could be OK. Anyway, I'm happy to revisit this after this issue at hand gets fixed.

justaugustus commented 4 years ago

/wg naming

BenTheElder commented 4 years ago

Concrete proposal here? https://groups.google.com/d/msgid/kubernetes-sig-cluster-lifecycle/CAGDbWi9_2m3GPE3GTkbwU-qsaeV7XvzhUaHP%3DC0Guvk3zM5OFg%40mail.gmail.com

What's next for this?

neolit123 commented 4 years ago

after the recent discussions at wg-naming i saw no objections around allowing maintainers to follow the established k8s deprecation policies for similar changes. thus, i think we can proceed with the KEP for 1.20 as outlined in the OP here.

sftim commented 4 years ago

In the KEP that follows from this, I would emphasize when explaining the motivation Kubernetes uses the term “control plane” (note: no dash when used in running text) to have pretty much the same meaning. Plus of course the word “master” in this context implies “slave” is linked directly to human rights abuses.

node-role.kubernetes.io/control-plane feels like the obvious replacement.

neolit123 commented 4 years ago

NOTE: KEP draft is here: https://docs.google.com/document/d/1kPs_zFconMU83LCOfBr_xKXfghn3y9VLLrTUSlCAf4s/edit#

BenTheElder commented 4 years ago

Thank you for writing this up! +1 This looks plenty detailed enough to move to a KEP PR when you're ready.

On Tue, Sep 29, 2020 at 11:27 AM Lubomir I. Ivanov notifications@github.com wrote:

NOTE: KEP draft is here:

https://docs.google.com/document/d/1kPs_zFconMU83LCOfBr_xKXfghn3y9VLLrTUSlCAf4s/edit#

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/kubernetes/kubeadm/issues/2200#issuecomment-700898607, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHADK6U6JN2EKQGGL7OIEDSIIRKFANCNFSM4OIMHSOA .

neolit123 commented 4 years ago

In the KEP that follows from this, I would emphasize when explaining the motivation Kubernetes uses the term “control plane” (note: no dash when used in running text) to have pretty much the same meaning. Plus of course the word “master” in this context implies “slave” is linked directly to human rights abuses.

@sftim "master" actually is not the same as "control plane". historically "master" in the k8s project meant:

in kubeadm, we have usage of the first case and a rename to control-plane has a clear intent.

i don't think we should include details around that or topics like "human rights" in the kubeadm KEP, so i'm defering this to the WG Naming group.

qnetter commented 4 years ago

Is there prior art in any distributor tooling? I know Rancher's RKE uses etcd, control-plane, and worker node naming.

neolit123 commented 4 years ago

Is there prior art in any distributor tooling?

usage of the key node-role.kubernetes.io/master can be found in both commercial (closed source) and open-source projects.

neolit123 commented 4 years ago

"enhancement" tracking issue: https://github.com/kubernetes/enhancements/issues/2067 KEP PR: https://github.com/kubernetes/enhancements/pull/2068

the plan for 1.20 is clear. for the later stages the feedback on the draft is now part of the KEP PR, but we can amend the proposal if needed.

neolit123 commented 3 years ago

the proposal merged: http://git.k8s.io/enhancements/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint/README.md 1.20 is the first stage of the rename. the plan for the later stages may change depending on feedback.

tracking issue at k/e: https://github.com/kubernetes/enhancements/issues/2067

neolit123 commented 3 years ago

PR for the 1.20 changes in kubeadm source code: https://github.com/kubernetes/kubernetes/pull/95382

neolit123 commented 3 years ago

PR for the 1.20 changes in kubeadm source code: kubernetes/kubernetes#95382

this is merging.

celestehorgan commented 3 years ago

@neolit123 I believe all your sub-items on this task are done. Is this issue ready to be closed? :)

neolit123 commented 3 years ago

@celestehorgan hi, we should keep this open until the transition from master -> control-plane has fully completed in future releases. if you'd like we can be removed the WG Naming label via /remove-wg naming or just remove it from the WG Naming GitHub project tracking?

fejta-bot commented 3 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale

neolit123 commented 3 years ago

/remove-lifecycle stale

k8s-triage-robot commented 2 years ago

The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

You can:

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

sftim commented 2 years ago

Would it be OK to mark this one as frozen?

neolit123 commented 2 years ago

There are action items for 1.24.

/remove-lifecycle stale

calvin0327 commented 2 years ago

1.23 will be released soon, can we delete the corresponding logic in 1.24?

neolit123 commented 2 years ago

I will assign myself to work on this in 1.24. Thanks. On Dec 2, 2021 12:03, "Calvin Chen" @.***> wrote:

1.23 will be released soon, can we delete the corresponding logic in 1.24?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/kubernetes/kubeadm/issues/2200#issuecomment-984475670, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACRATHNANYR47LNQWP2XCTUO5AA7ANCNFSM4OIMHSOA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

neolit123 commented 2 years ago

WIP PR for 1.24 (stage 2) is here: https://github.com/kubernetes/kubernetes/pull/107533

neolit123 commented 2 years ago

we need to send a fix for the e2e_kubeadm suite in the release-1.23 branch of k/k: https://github.com/kubernetes/kubernetes/pull/108128#issuecomment-1041822415 as this broke the kubeadm CP skew tests.

i will do that later today, probably.

perosb commented 2 years ago

just upgraded to 1.24. shouldn't the control-plane taint only be added to nodes that have a master taint if this is a "rename"? I had removed master taint from control plane nodes which suddenly became unschedulable.

neolit123 commented 2 years ago

that's a good point.. unfortunately that ended as an oversight on our side in this code

you are going to have to remove the new taint again.

perosb commented 2 years ago

that's a good point.. unfortunately that ended as an oversight on our side in this code

you are going to have to remove the new taint again.

do I read it correct that this will get added for all future upgrades too? as long as the code is there, at least for all 1.24.x? the master taint wasn't previously added during every upgrade.

neolit123 commented 2 years ago

No, we can backport a fix for the .1

neolit123 commented 2 years ago

No, we can backport a fix for the .1

1.25 PR https://github.com/kubernetes/kubernetes/pull/109840 1.24 backport https://github.com/kubernetes/kubernetes/pull/109841

devnewton commented 2 years ago

"Kubernetes" also means "master". The whole project should be renamed to avoid this offensive word.

tvsaru commented 2 years ago

I did some googling and see that the inspiration for Kubernetes naming is from the meaning "helmsman", "pilot", "governor" , given that "[docker] containers were portrayed as shipping containers on a whale like ship" and Kubernetes then becomes an awesome name for a "container orchestration system"

@devnewton where did you get the "master" meaning for Kubernetes from.

sftim commented 2 years ago

The home to discuss naming issues was WG Naming (see, for example, its Google Group). That WG has now dissolved as the discussions it dealt with are settled.

We're replacing the English term “master” in some contexts due to its cultural links with oppression. WG Naming has not made any proposal to replace Greek terms. Please use this issue to discuss the topic: replacing a specific label. If folks want to start any new discussion on a different topic, this is not the right place.

neolit123 commented 2 years ago

1.25 PR is here (stage 3, as outlined in the OP): https://github.com/kubernetes/kubernetes/pull/110095

kubeadm: stop applying the "node-role.kubernetes.io/master:NoSchedule" taint to control plane nodes for new clusters. Remove the taint from existing control plane nodes during "kubeadm upgrade apply"

neolit123 commented 1 year ago

i think we are done here. thanks to everyone who helped.

i don't see anything remaining in k/website or k/k but please LMK if you find anything. PRs around stage 4 in various repos are welcome too.

sftim commented 1 year ago

@neolit123 We should document the old label (and taint) in https://kubernetes.io/docs/reference/labels-annotations-taints/, but mark it as deprecated.

sftim commented 1 year ago

In fact, I thought that https://github.com/kubernetes/website/pull/36173 put it back. Hmm.

neolit123 commented 1 year ago

@neolit123 We should document the old label (and taint) in https://kubernetes.io/docs/reference/labels-annotations-taints/, but mark it as deprecated.

could you please log an k/website ticket about with help wanted? seems simple enough to be completed by a new contributor.

neolit123 commented 1 year ago

In fact, I thought that kubernetes/website#36173 put it back. Hmm.

i don't know when was your change removed