Skip to content
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

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

Closed
19 tasks done
neolit123 opened this issue Jun 25, 2020 · 41 comments
Closed
19 tasks done

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

neolit123 opened this issue Jun 25, 2020 · 41 comments
Assignees
Labels
kind/deprecation Categorizes issue or PR as related to a feature/enhancement marked for deprecation. kind/design Categorizes issue or PR as related to design. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. wg/naming Categorizes an issue or PR as relevant to WG Naming.
Projects

Comments

@neolit123
Copy link
Member

neolit123 commented Jun 25, 2020

KEP: http://git.k8s.io/enhancements/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint/README.md
kubernetes/enhancements#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:
kubernetes/community#4884

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

  • only usage of "master" can be found in a few places
  • there is no other offensive language, such as "slave", "white/black list", or at least we are not aware of any (depends what we end up disallowing too)
  • in the past, we did a big purge of "master" from code and k8s.io website docs, and replaced it with "control-plane", but a few usages remain in the code.
  • kubeadm labels a control-plane Node with "node-role.kubernetes.io/master".
  • kubeadm taints a control-plane Node with key "node-role.kubernetes.io/master" and effect "NoSchedule".
  • kubeadm adds a toleration for its CoreDNS Deployment for the "node-role.kubernetes.io/master" taint.
  • kubeadm code comments still call the label/taint as "the master label/taint".

timeline (TO BE DEFINED):

  • likely no actions for 1.19.
  • likely a GA deprecation policy will take action, which means that the removal will be executed over 1 year (or 3 releases).
  • the exact order of tasks and how the replacement will happen is TBD, but we have ideas of how to minimize the breakage.
  • a kubeadm level KEP will be required that will likely merge as "implementable" for 1.20.
  • once the KEP is in place we will start executing on the tasks and notifying consumers on all possible channels.

replacement name (TO BE DEFINED):

  • we have at least a couple of proposals, but we are leaning towards "Control Plane" naming.

action items before the work starts:

  • ACTION ITEM(@neolit123): join the SIG Cluster Lifecycle meeting and discuss:
    • usage of offensive language in SIG projects - all sub-projects have been notified.
    • discuss naming (control-plane vs ???) - no objections to control-plane.
    • discuss timeline for kubeadm and other projects - will vary between projects. still depends on the WG Naming demands, but we are hoping for a GA deprecation policy.
  • ACTION ITEM(@neolit123): discuss the following with WG naming:
    • usages of offensive language in kubeadm (+other SIG projects?)
    • preferred timeline?
    • naming?
    • communication channels for user complains?

please subscribe to this ticket for updates.

@neolit123 neolit123 added kind/deprecation Categorizes issue or PR as related to a feature/enhancement marked for deprecation. kind/design Categorizes issue or PR as related to design. kind/feature Categorizes issue or PR as related to a new feature. labels Jun 25, 2020
@neolit123 neolit123 added this to the Next milestone Jun 25, 2020
@neolit123 neolit123 added the priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. label Jun 25, 2020
@sftim
Copy link

sftim commented Jun 26, 2020

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

@neolit123
Copy link
Member Author

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
Copy link

sftim commented Jun 26, 2020

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
Copy link
Member

/wg naming

@BenTheElder
Copy link
Member

@neolit123
Copy link
Member Author

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
Copy link

sftim commented Sep 29, 2020

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
Copy link
Member Author

@BenTheElder
Copy link
Member

BenTheElder commented Sep 29, 2020 via email

@neolit123
Copy link
Member Author

neolit123 commented Sep 29, 2020

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:

  • a Node that hosts control plane components
  • an instance of the kube-apiserver
  • EDIT: i guess it also has another meaning - admin.

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
Copy link

qnetter commented Sep 29, 2020

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

@neolit123
Copy link
Member Author

neolit123 commented Sep 29, 2020

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
Copy link
Member Author

"enhancement" tracking issue:
kubernetes/enhancements#2067
KEP PR:
kubernetes/enhancements#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 neolit123 self-assigned this Oct 6, 2020
@neolit123 neolit123 added the lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. label Oct 6, 2020
@neolit123
Copy link
Member Author

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:
kubernetes/enhancements#2067

@neolit123 neolit123 removed this from the Next milestone Oct 6, 2020
@neolit123 neolit123 modified the milestones: v1.25, v1.26 Jun 27, 2022
PurpleBooth added a commit to kube-hetzner/terraform-hcloud-kube-hetzner that referenced this issue Aug 1, 2022
This taint should match the new role name "control-plane"

Kubeadm [will remove this with 1.25][issue]

[issue]: kubernetes/kubeadm#2200
@neolit123
Copy link
Member Author

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.

WG Naming automation moved this from In progress to Done Oct 7, 2022
@sftim
Copy link

sftim commented Oct 7, 2022

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

@sftim
Copy link

sftim commented Oct 7, 2022

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

@neolit123
Copy link
Member Author

@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
Copy link
Member Author

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

i don't know when was your change removed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/deprecation Categorizes issue or PR as related to a feature/enhancement marked for deprecation. kind/design Categorizes issue or PR as related to design. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. wg/naming Categorizes an issue or PR as relevant to WG Naming.
Projects
WG Naming
  
Done
Development

No branches or pull requests