Kubernetes cluster components

Control plane components
kube-apiserver
The API Server services REST operations and provides the frontend to the cluster's shared state through which all other components interact.

kube-controller-manager
Control the cluster's objects. For example: responding when nodes go down, maintaining the correct number of pods for every replication controller object in the system, populates the endpoints object etc.

kube-scheduler
Will manage which node will take up the work (where to place the objects, pods for example). It schedules Pods to specific nodes based on labels, taints and tolerations set for the Pods.

etcd
Consistent and highly-available B+tree key value store used as Kubernetes backing store for all cluster data.

optional addons
Like DNS - implemented as coredns Pod, you'll always see it. Dashboard is a optional component that provides a web-based interface that allows you to work with Kubernetes. And you can work with components for cluster level resource monitoring and cluster level logging.


Worker components
kubelet
An agent that runs on each node in the cluster. It makes sure that containers are running in a Pod.

kube-proxy
Coordinate communication, is a network proxy that runs on each node and uses iptables, implementing part of the Kubernetes Service concept.

container runtime
like docker, rktd, containerd.That takes care actually of running the containers

supervisord
Monitors an guarantees the availability of the kubelet and container runtime.

network agent
Implements a software defined networking solution such as weave. An important components which needs to be installed separately.

logging
The CNCF project Fluentd is used for unified logging in the cluster. A Fluentd agent must be installed on all of the Kubernetes nodes and if it not the case - you need to rely to the logging on the individual Pods.