The Control Plane
The control plane is the Kubernetes brain. It is responsible for managing the cluster's state, scheduling workloads, and maintaining the desired state of applications.
The control plane is composed by several key components which work together to ensure that the cluster operates efficiently.
API Server
The API server acts as the "front door" of the cluster.
Every command you run goes through here. It is a REST API that all other components talk to.
You can reach the API server by making an HTTP request to the cluster's HTTPS endpoint, e.g.: https://<API_SERVER_IP>:6443.
CLI utilities
When you issue commands using CLI utilities such as kubectl or helm, you are calling the cluster's HTTPS endpoint under the hood.
The API server is also used by other Kubernetes components such as the Scheduler.
etcd
etcd on it’s own is a fast, lightweight key-value database.
In Kubernetes, etcd stores the entire state of the cluster.
How does Kubernetes store it's state?
When Kubernetes changes a resource, the API server validates the request and persists the resource’s desired state in etcd.
Kubernetes controllers and other components then observe that change through the API server and work to make the cluster’s actual state match the desired state.
Scheduler
The scheduler is responsible for distributing work, (or containers), across multiple worker nodes.
It continuously scans for newly created containers and then picks the best worker node to run them on (based on available CPU, memory, rules, etc.).
Controller Manager
The controller manager runs a collection of Kubernetes controllers. (1)
- A controller is a control loop that continuously monitors the state of Kubernetes resources and takes action to move the cluster from its current state toward the desired state, for instance, the node controller is responsible for monitoring the status of existing nodes.