Kubernetes is a container workload orchestration and management tool. It was created by Google and open sourced to all by 2015. Since then, it has attained significant adoption as the main tool for container orchestration by the industry. The Cloud Native Consortium Foundation (CNCF) manages this open source technology and along with the an ecosystem has created to build and release related technologies and framework.
We need this for orchestration of workloads/containers. Kubernetes has a mechanism to ensure that it automatically self heals and corrects recoverable errors/faults in the system. This makes our applications much more resilient as failures are auto-recovered and the Engineering staff will be involved for non-recoverable errors.
Kubernetes is made up of Control Plane components that are installed in the Kubernetes Master nodes and the Worker nodes. It uses a Container runtime to manage the running of containers in the nodes. Also Kubernete uses serveral Kubernetes resources to abstract the underlying infrastructure concerns like Network and Storage to provide the supported functionalities.
The Master nodes have the following components:
- Kube API Server (front ends the K8s cluster)
- ETCD (key value based data store for the cluster state)
- Controller Manager (responsible for running the controllers)
- Scheduler (responsible for assigning workloads to nodes)
The Worker nodes have the following components:
- Kubelet (responsible for initializing the pods)
- Container Runtime (responsible for creating and the containers)
- Kube Proxy (manages the worker node's firewall).