Components
Last updated
Last updated
A Kubernetes cluster is a set of nodes that run containerized applications.
It comes with something called a control plane that manages the overall state of the cluster, as well as make global decisions about the cluster (for example, scheduling). It is responsible for maintaining the desired state of the cluster, responding to user requests, and managing the deployment and scaling of applications.
The API server is a component that exposes the Kubernetes API. It serves as the front end for the control plane. Users, other components, and external tools communicate with the cluster through the API server.
etcd is an open source distributed key-value store that stores the configuration data of the cluster, representing the overall state of the system. The control plane components watch for changes in etcd and react accordingly to maintain the desired state.
The controller manager is responsible for running controller processes that regulate the state of the cluster. Examples include the Replication Controller, which ensures the correct number of replicas for a set of pods, and the Node Controller, which monitors and responds to changes in the nodes of the cluster.
The scheduler is responsible for placing pods onto nodes in the cluster. It takes into account factors such as resource requirements, hardware constraints, and affinity/anti-affinity specifications when making placement decisions.
These components work together to ensure that the cluster is in the desired state, and they continuously monitor and adjust the cluster to maintain that state. The control plane components are typically distributed across multiple nodes for high availability and fault tolerance.
The worker nodes are responsible for hosting the application pods in the cluster.
Kubelet is an agent that runs on each node and is responsible for creating the pods by the provided YAML specs, reporting the health status of the pods and providing status information on the node. (network, disk space, etc.)
The container runtime is the software responsible for running containers. Kubernetes supports various container runtimes, including Docker, containerd, and others. The container runtime is responsible for pulling container images from a container registry, creating containers, and managing their lifecycle.
Kube-proxy is responsible for network proxying on the worker nodes. It maintains network rules to allow communication to Pods from network sessions inside or outside of the cluster. Kube-proxy enables the communication between different Pods and services in the cluster.