Try recommending alternatives to master
This commit is contained in:
parent
b1c6840d02
commit
4b70d8f7ed
|
|
@ -0,0 +1,119 @@
|
|||
# Recommendation: master -> control plane
|
||||
|
||||
**Last Updated**: 2020-10-16
|
||||
|
||||
**Status**: Draft
|
||||
|
||||
## Recommendation
|
||||
|
||||
Within the Kubernetes codebase, the term “master” is often used in reference to
|
||||
[the kubernetes control plane][architecture], either as a whole or to some
|
||||
subset of the components within. We recommend **control plane** to refer to the
|
||||
set of components as a whole. We recommend **context-specific alternatives**
|
||||
when talking about individual components or the roles they serve.
|
||||
|
||||
## Suggested Alternatives
|
||||
|
||||
### Control Plane
|
||||
- e.g. "The control plane is the set of all components responsible for
|
||||
controlling a kubernetes cluster"
|
||||
- e.g. "The control plane is the thing that can be communicated with in order to
|
||||
control a kubernetes cluster"
|
||||
- If it matters which specific component(s) or component instance is being
|
||||
communicated with, be specific:
|
||||
- endpoint, e.g. "we don't care whether a load balancer, apiserver, or other
|
||||
component is behind this endpoint; we will talk only to this endpoint and no
|
||||
other"
|
||||
- instance, e.g. "we are going to create multiple control plane apiserver
|
||||
instances; we will talk only to this specific instance"
|
||||
- <component name>, e.g. "we will simulate an etcd fault by running this
|
||||
command on instances where etcd is hosted"
|
||||
|
||||
### Control Plane Node
|
||||
- "A node that hosts components that are part of the control plane", e.g.
|
||||
- https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint
|
||||
- https://github.com/kubernetes/kubernetes/pull/95053/files#diff-b4f6256abfd125f7ce69fd1ba1eaf595R886
|
||||
- Also relevant for terms other than node, e.g. control plane machine, control
|
||||
plane host, control plane vm, control plane instance, e.g.
|
||||
- https://github.com/kubernetes/kubernetes/blob/99cc89b7da32d9c06916deb50b27fdb46934b777/cluster/gce/gci/master-helper.sh#L33
|
||||
should be `create-control-plane-instance`
|
||||
|
||||
### Leader
|
||||
- e.g. "The leader is the winner of a leader election"
|
||||
- When using an adjective instead of a noun to describe this concept, there is
|
||||
likely a more specific term:
|
||||
- active/passive, e.g. "The active controller-manager process is the one that
|
||||
wins its leader election"
|
||||
- primary/replica
|
||||
|
||||
## Other Considerations
|
||||
- if the api field, flag, code, command etc. uses the literal word 'master' and
|
||||
cannot be immediately changed or has no alternative available, use this word
|
||||
only in direct reference to the code item
|
||||
- `master` branch being renamed to `main` branch falls under this
|
||||
- there are no strict guarantees about how and where control plane components
|
||||
can and will run, e.g.
|
||||
- they may run on machines that are not registered as Nodes for the Kubernetes
|
||||
cluster they control
|
||||
- they may run alongside user workloads on Nodes in the Kubernetes cluster
|
||||
they control
|
||||
- there may be one to many instances of each control plane component
|
||||
- When using terminology that could be seen as generic, consider whether there
|
||||
is enough context available to disambiguate potential meanings for the reader.
|
||||
e.g.
|
||||
- "instance" - an instance of what?
|
||||
- "apiserver" - is this a generic apiserver? is this a kubernetes apiserver?
|
||||
is this an apiserver that has been configured to be part of the kubernetes
|
||||
control plane?
|
||||
- "endpoint" - what's at the other end of this endpoint?
|
||||
|
||||
## Context
|
||||
|
||||
Master raises first-order concerns according to [our language evaluation
|
||||
framework][framework]:
|
||||
- it is overtly racist (ref: [django][django-master], [Drupal][drupal-master],
|
||||
[IETF][ietf-master],
|
||||
[Google][https://developers.google.com/style/word-list#master])
|
||||
|
||||
Master also raises third-order concerns:
|
||||
- within kubernetes it is used to represent a variety of overlapping or
|
||||
unrelated concepts (see the variety of suggested alternatives)
|
||||
- one class of usage represents a set of false assumptions:
|
||||
- there is exactly one instance of each control plane component
|
||||
- there is exactly one kubernetes node that hosts all of these components
|
||||
- these components are guaranteed to run in a specific manner (systemd units,
|
||||
on certain ports, etc.)
|
||||
|
||||
Prior discussions:
|
||||
- [kubernetes-wg-naming@ - proposal: master/slave
|
||||
alternatives][wg-naming-thread]
|
||||
- [kubernetes-sig-architecture@ - Re: the way we discuss control plane
|
||||
members][sig-arch-thread]
|
||||
|
||||
## Consequences
|
||||
|
||||
TODO
|
||||
|
||||
- hound search that approximates excluding some master-branch-in-docs
|
||||
references, and references in vendor/:
|
||||
https://cs.k8s.io/?q=master%5B%5E%2F%5D&i=nope&files=%5E%5B%5Ev%5D&repos=
|
||||
- references to master in test/e2e/framework
|
||||
(https://github.com/kubernetes/kubernetes/issues/94901)
|
||||
- references to master in test/integration
|
||||
(https://github.com/kubernetes/kubernetes/issues/94900)
|
||||
- known names/flags/fields/labels/annotations that may take time to change
|
||||
- `"system:masters"` aka
|
||||
[k8s.io/apiserver/pkg/authentication/user.SystemPrivilegedGroup][system-privileged-group]
|
||||
- `node-role.kubernetes.io/master` (tracking issue for KEP
|
||||
https://github.com/kubernetes/enhancements/issues/2067)
|
||||
- `--endpoint-reconciler-type master-count`
|
||||
- probably more
|
||||
|
||||
[architecture]: https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#architecture
|
||||
[wg-naming-thread]: https://groups.google.com/g/kubernetes-wg-naming/c/VqrBCdUHdPc
|
||||
[sig-arch-thread]: https://groups.google.com/u/1/g/kubernetes-sig-architecture/c/ZKUOPy2PNJ4/m/q3dC6pNtBQAJ
|
||||
[framework]: https://git.k8s.io/community/wg-naming/language-evaluation-framework.md
|
||||
[ietf-master]: https://tools.ietf.org/id/draft-knodel-terminology-00.html#master-slave
|
||||
[drupal-master]: https://www.drupal.org/node/2275877
|
||||
[django-master]: https://github.com/django/django/pull/2692
|
||||
[system-privileged-group]: https://github.com/kubernetes/kubernetes/blob/a9d1482710a4c4baf112890882f4ab3d4be158a6/staging/src/k8s.io/apiserver/pkg/authentication/user/user.go#L71
|
||||
Loading…
Reference in New Issue