A Kubernetes cluster typically consists of the following main components:
- Control Plane: The most important node of the cluster, responsible for managing the state of the cluster and coordinating the scheduling and orchestration of workloads.
- Worker nodes: These are the nodes that run the actual workloads, such as containers. The control plane communicates with the worker nodes to schedule and manage the running containers.
- etcd: A distributed key-value store that stores the configuration data of the cluster, such as the desired state of the workloads.
- Kubernetes API server: The main interface for interacting with the cluster, through which clients can submit commands and queries to the cluster.
- kubelet: A small agent that runs on each worker node, responsible for communicating with the master node and ensuring that the desired state of the workloads is maintained on the node.
- kubeproxy: A network proxy that runs on each worker node, responsible for routing network traffic to the appropriate pods and services.