The Kubernetes control plane is the central management component of a Kubernetes cluster. It is responsible for maintaining the cluster's desired state, including management of the creation, scaling, and deletion of application components (such as pods, services, and replica sets).
Components of a Control Plane
The control plane consists of several components that work together to orchestrate the cluster.
1. API server
This is the control plane's central component, which acts as the main entry point for all API requests. The API server validates and persists all changes to the cluster state.
2. etcd
This is a distributed key-value store that stores the configuration data of the cluster. The API server uses the data stored in etcd to determine the cluster's desired state.
3. Controller manager
This component runs various controllers responsible for ensuring that the current state of the cluster matches the desired state. For example, the replication controller ensures that the desired number of replicas of a pod is running.
4. Scheduler
This component is in charge of scheduling pods on nodes based on various resource requirements and constraints.
These components form the control plane and provide the essential functionality required to run and manage a Kubernetes cluster.
Pre-Requisites
Generated TLS Certificates for control plane components and CA certificate
Created kubeconfigfor control plane components
💡
In a previous article, we covered the installation of individual binaries for the control plane components. You can find it here for reference.
Managing Certificates
Let's create a directory where we will store the configuration files and certificates required by Kubernetes. After that, we'll move the certificates from the home directory to the specific directory responsible for storing TLS certificates.
✍️
The certificates that we had previously generated in the blog, TLS Certificate Management, will now be moved into the /var/lib/kubernetes/pki directory.
Managing Config Files
ℹ️
Before proceeding with the following steps, we suggest reviewing our blog on generating kubeconfig files for additional context.
Move the generated kubeconfig files into the Kubernetes directory.