This article will provide you with a brief introduction of Kubernetes, its Architecture & in the end the big picture on how all the components looks like when put together.
First things first, The most basic deployment of Kubernetes will comprise of:
A] The Controller node
B] The Worker nodes (minimum of two)
NOTE: The above recommendation is for basic ‘get to know’ basis. In real world scenario, the user can have as many Controller nodes(3 recommended) & maximum of 5000 Worker nodes.
Lets start with basic kubernetes components that resides in each of Controller & Worker nodes
- Control Plane Components: The Control plane is a collection of multiple components responsible for managing the cluster globally. K8s control Plane is responsible for running kubernetes cluster. Control Plane components can run on one Controller server or may span across many servers.
a) kube-api-server: This serves the k8s API, the primary interface to the control plane & the cluster itself. User will always interact with the K8s cluster using the K8s APIs.
b) etcd: etcd is the backend data store for the k8s cluster. It provides high-availability storage for all data relating to the state of cluster. when the user performs operations against the k8s api, in the backend the data is been READ from & WRITE to etcd.
c) kube-scheduler: kube-scheduler takes care of selecting an available node in the cluster on which to run containers. K8s api instructs kubernetes to run pod or container. Scheduler is responsible for assigning/scheduling the container to the specific Worker node.
d) kube-controller-manager: kube-controller-manager runs a collection of multiple controller utilities in a single process. these controllers carry out a variety of automation related tasks within the k8s cluster.
e) cloud-controller-manager: This provides interface between kubernetes & various cloud platforms.
- Worker Node Components: Kubernetes nodes are the machines where the containers managed by cluster run. Various node components manage container containers on the machine & communicate with the control plane.
a) kubelet: kubelet is the k8s agent that runs on each node. It communicates with the control plane & ensures that containers are running on its node as instructed by the control plane. kubelet also handles the process of reporting container status and other data about containers back to the control plane.
b) container runtime: container-runtime is responsible for actually running containers on the machine. It is not built into k8s. K8s supports multiple container runtime implementations. Some popular container runtimes are Docker & containerd.
c) kube-proxy: kube-proxy runs on each node & handles some tasks related to providing networking between container & services in the cluster.
A Kubernetes Cluster…
Putting the Worker nodes with Controller node, the Kubernetes cluster will look like:
Above article describes Kubernetes architecture, control & worker nodes.
Check for the next post on Namespaces here.