Main components of K8s
Master Node
API Server | The API Server communicates with all the components within the cluster. |
Key-Value Store (etcd) | A light-weight distributed key-value store used to accumulate all cluster data. |
Controller | Uses the API Server to monitor the state of the cluster. It tries to move the actual state of the cluster to match the desired state from your manifest file. |
Scheduler | Schedules newly created pods onto worker nodes. Always selects nodes with the least traffic to balance the workload. |
Worker Node
Worker nodes are the machines where the containerized workloads and storage volumes are deployed.
There are multiple instances of Worker Nodes, each performing their assigned tasks.
Kubelet | A daemon that runs on each node and responds to the master’s requests to create, destroy, and monitor pods on that machine. |
Container Runtime | A container runtime retrieves images from a container image registry and starts and stops containers. This is usually a 3rd party software or plugin, such as Docker. |
Kube-proxy | A network proxy that maintains network communication to your Pods from within or from outside the cluster. |
Add-ons (DNS, Web UI..) | Additional features you can add to your cluster to extend certain functionalities. |
Pod | A pod is the smallest element of scheduling in Kubernetes. It represents a ‘wrapper’ for the container with the application code. If you need to scale your app within a Kubernetes cluster, you can only do so by adding or removing pods. A node can host multiple pods. |