Kubernetes is an open source system that automates the management and deployment of containerized applications. It was originally developed by Google which has been managing containerized applications and workloads for more than a decade. It is now an open source project under the stewardship of the Cloud Native Computing Foundation (CNCF) and the Linux Foundation.
The typical Kubernetes architecture consists of several parts which allow the system to function. The master node is responsible for all administrative tasks for the Kubernetes cluster, and orchestrates all of the worker nodes which run the actual services. Components of the master node are the kube-apiserver, etcd storage, kube-scheduler, kube-controller-manager and cloud-controller-manager.
The worker nodes run the Kubernetes pods, so they contain all the services that manage networking between containers and communications with the master node, and the worker node assigns resources to the containers. Components of the worker node include a container runtime such as Docker, kubelet, kube-proxy, and kubectl.
Addons are pods and services that provide cluster features, including DNS, Web UI, Container Resource Monitoring, and Cluster-level Logging.