Skip to content

Commit 0f92fac

Browse files
authored
Merge pull request #5243 from spiffxp/control-plane-recommendation
Try recommending alternatives to master
2 parents 46f114f + 4b70d8f commit 0f92fac

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# Recommendation: master -> control plane
2+
3+
**Last Updated**: 2020-10-16
4+
5+
**Status**: Draft
6+
7+
## Recommendation
8+
9+
Within the Kubernetes codebase, the term “master” is often used in reference to
10+
[the kubernetes control plane][architecture], either as a whole or to some
11+
subset of the components within. We recommend **control plane** to refer to the
12+
set of components as a whole. We recommend **context-specific alternatives**
13+
when talking about individual components or the roles they serve.
14+
15+
## Suggested Alternatives
16+
17+
### Control Plane
18+
- e.g. "The control plane is the set of all components responsible for
19+
controlling a kubernetes cluster"
20+
- e.g. "The control plane is the thing that can be communicated with in order to
21+
control a kubernetes cluster"
22+
- If it matters which specific component(s) or component instance is being
23+
communicated with, be specific:
24+
- endpoint, e.g. "we don't care whether a load balancer, apiserver, or other
25+
component is behind this endpoint; we will talk only to this endpoint and no
26+
other"
27+
- instance, e.g. "we are going to create multiple control plane apiserver
28+
instances; we will talk only to this specific instance"
29+
- <component name>, e.g. "we will simulate an etcd fault by running this
30+
command on instances where etcd is hosted"
31+
32+
### Control Plane Node
33+
- "A node that hosts components that are part of the control plane", e.g.
34+
- https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint
35+
- https://github.com/kubernetes/kubernetes/pull/95053/files#diff-b4f6256abfd125f7ce69fd1ba1eaf595R886
36+
- Also relevant for terms other than node, e.g. control plane machine, control
37+
plane host, control plane vm, control plane instance, e.g.
38+
- https://github.com/kubernetes/kubernetes/blob/99cc89b7da32d9c06916deb50b27fdb46934b777/cluster/gce/gci/master-helper.sh#L33
39+
should be `create-control-plane-instance`
40+
41+
### Leader
42+
- e.g. "The leader is the winner of a leader election"
43+
- When using an adjective instead of a noun to describe this concept, there is
44+
likely a more specific term:
45+
- active/passive, e.g. "The active controller-manager process is the one that
46+
wins its leader election"
47+
- primary/replica
48+
49+
## Other Considerations
50+
- if the api field, flag, code, command etc. uses the literal word 'master' and
51+
cannot be immediately changed or has no alternative available, use this word
52+
only in direct reference to the code item
53+
- `master` branch being renamed to `main` branch falls under this
54+
- there are no strict guarantees about how and where control plane components
55+
can and will run, e.g.
56+
- they may run on machines that are not registered as Nodes for the Kubernetes
57+
cluster they control
58+
- they may run alongside user workloads on Nodes in the Kubernetes cluster
59+
they control
60+
- there may be one to many instances of each control plane component
61+
- When using terminology that could be seen as generic, consider whether there
62+
is enough context available to disambiguate potential meanings for the reader.
63+
e.g.
64+
- "instance" - an instance of what?
65+
- "apiserver" - is this a generic apiserver? is this a kubernetes apiserver?
66+
is this an apiserver that has been configured to be part of the kubernetes
67+
control plane?
68+
- "endpoint" - what's at the other end of this endpoint?
69+
70+
## Context
71+
72+
Master raises first-order concerns according to [our language evaluation
73+
framework][framework]:
74+
- it is overtly racist (ref: [django][django-master], [Drupal][drupal-master],
75+
[IETF][ietf-master],
76+
[Google][https://developers.google.com/style/word-list#master])
77+
78+
Master also raises third-order concerns:
79+
- within kubernetes it is used to represent a variety of overlapping or
80+
unrelated concepts (see the variety of suggested alternatives)
81+
- one class of usage represents a set of false assumptions:
82+
- there is exactly one instance of each control plane component
83+
- there is exactly one kubernetes node that hosts all of these components
84+
- these components are guaranteed to run in a specific manner (systemd units,
85+
on certain ports, etc.)
86+
87+
Prior discussions:
88+
- [kubernetes-wg-naming@ - proposal: master/slave
89+
alternatives][wg-naming-thread]
90+
- [kubernetes-sig-architecture@ - Re: the way we discuss control plane
91+
members][sig-arch-thread]
92+
93+
## Consequences
94+
95+
TODO
96+
97+
- hound search that approximates excluding some master-branch-in-docs
98+
references, and references in vendor/:
99+
https://cs.k8s.io/?q=master%5B%5E%2F%5D&i=nope&files=%5E%5B%5Ev%5D&repos=
100+
- references to master in test/e2e/framework
101+
(https://github.com/kubernetes/kubernetes/issues/94901)
102+
- references to master in test/integration
103+
(https://github.com/kubernetes/kubernetes/issues/94900)
104+
- known names/flags/fields/labels/annotations that may take time to change
105+
- `"system:masters"` aka
106+
[k8s.io/apiserver/pkg/authentication/user.SystemPrivilegedGroup][system-privileged-group]
107+
- `node-role.kubernetes.io/master` (tracking issue for KEP
108+
https://github.com/kubernetes/enhancements/issues/2067)
109+
- `--endpoint-reconciler-type master-count`
110+
- probably more
111+
112+
[architecture]: https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md#architecture
113+
[wg-naming-thread]: https://groups.google.com/g/kubernetes-wg-naming/c/VqrBCdUHdPc
114+
[sig-arch-thread]: https://groups.google.com/u/1/g/kubernetes-sig-architecture/c/ZKUOPy2PNJ4/m/q3dC6pNtBQAJ
115+
[framework]: https://git.k8s.io/community/wg-naming/language-evaluation-framework.md
116+
[ietf-master]: https://tools.ietf.org/id/draft-knodel-terminology-00.html#master-slave
117+
[drupal-master]: https://www.drupal.org/node/2275877
118+
[django-master]: https://github.com/django/django/pull/2692
119+
[system-privileged-group]: https://github.com/kubernetes/kubernetes/blob/a9d1482710a4c4baf112890882f4ab3d4be158a6/staging/src/k8s.io/apiserver/pkg/authentication/user/user.go#L71

0 commit comments

Comments
 (0)