Architecture and components of Kubernetes

kube-apiserver

kubernetes API server validates and configures data for the api objects which include pods, services, replications controllers and others. This is the only component that communicates with the etcd cluster, making sure data is stored in etcd and is in agreement with the service details of the deployed pods

kube-controller

It runs number of distinct controller processes in the background( replication controller controls number of replicas in a pod). And it will regulate the shared state of the cluster and perform routine tasks. When a change in a service configuration occurs. The controller spots the change and starts working towards the new desire state.

kube-scheduler

It reads the requirements and schedules it on the nodes, this will runs each time there is a need to schedule pods. It must know the total resources available as well as resources allocated to existing workloads on each node.

kubelet

Regularly taking in new or modified pod specifications and ensuring that pods and their containers are healthy and running in the desired state. This component also reports to the apiserver on the health of the host where it is running.

kub-proxy

A service that runs on each worker node to deal with individual host, it performs request forwarding to the correct pods/container across the various isolated networks in a cluster.

kubectl

Command line toll that interacts with kube-apiserver and send commands to the master node. Each command is converted into an API call.

etcd

It is used to store the all data, as kubernetes is a distributed systems so its configuration data, state data and metadata.