Kubernetes cluster consists of master nodes and worker nodes. Multiple master nodes are needed for high availability and there can be n number of nodes. It allows to run thousands of pods at scale
Master node has 4 components
1) API server - Exposes many APIs for each type of functionality and consumes json files.
2) Cluster store - stores the json manifest along with other data in persistent store. etcd is used for storing data. There are many instances of it for high availability.
3) Controller - Controller runs in a loop. Think this like many scripts. Each script checks specific activity - like namespace checks, node checks,
4) Scheduler - schedules and manages the pods on many worker nodes using kubelet on the worker nodes.
Worker nodes consists of 3 components
1) kubelet - responsible for instantiating the pod
2) kube-proxy - responsible for reflecting the calls to the right pod/container
3) container engine - docker or rocker