
Kubernetes master – control plane
In the Kubernetes cluster, the master (control plane) consists of a set of components that are responsible for global decisions regarding the cluster, such as scheduling and deploying application instances to worker nodes, as well as managing cluster events. Additionally, the master exposes an API for communication for both worker nodes and managing clients.
Master components are not restricted to running on a dedicated host; it is also possible to have them running on worker nodes. The master node can act as a worker node, just like any node in a Kubernetes cluster. However, in general, these are not recommended due to reliability reasons – what's more, for production environments, you should consider running a highly available Kubernetes setup, which requires multiple master nodes running components redundantly.
One of the most significant limitations of running Kubernetes master services is that they have to be hosted on a Linux machine. It is not possible to have a Windows machine with master components, which means that even if you are planning to run Windows containers only, you still need Linux machine(s) as a master. Currently, there are no plans for the implementation of Windows-only Kubernetes clusters, although this may change as the development of the Windows Subsystem for Linux 2 progresses.
We will briefly go through the components that compose the master. Let's begin by taking a look at the Kubernetes API Server (or kube-apiserver, which is the binary name of this component).