Kubernetes, also known as k8s, is a container orchestration system that automates the deployment, management, scalability and networking of containers across the cluster. It is used to manage the life cycle of containers.
Kubernetes Cluster: Kubernetes cluster is a set of virtual or physical machines consisting of two different types of nodes (Master Node & Worker Node) that are used to run containerized applications. Every cluster must have at least one worker node. Minikube is a tool that helps you to run single-node Kubernetes clusters locally on your personal computer.
- Master Node
- Worker Node
Master Node: The master node is responsible to manage to whole Kubernetes cluster. It manages and checks the health of the worker nodes. If any node fails to work, then it transfers the loads to another node. It is the access point through which we interact with the cluster to manage, schedule and deploy multiple containers. The master node contains Scheduler, API Server, Control Manager, etcd
- kube-scheduler: It is responsible for distributing the workload to multiple nodes and it also assigns newly created pods to worker nodes.
- API Server: API server is the gatekeeper inside the cluster. All the components of the master node connect with rest of the cluster through API server. - Control Manager: Control manager is the brain of the entire orchestration system. It is responsible for managing nodes and ensures that every worker node and the specified number of pods are working all the time.
- etcd: etcd is a lightweight database that stores all the data (in key-value pairs) that are used to manage a cluster.
Worker Node: It is a physical or virtual machine managed by the master node where containers are deployed. It has two main components. One is kubelet and another one is kube-proxy.
kubelet: A primary node agent that runs on each worker node inside the cluster. It manages the connection between the master and worker node. It provides the health information of the worker node to the master node and ensures that pods are running and healthy. If any pod fails to work, it sends the information to the master node and the Kubernetes master tries to run or recreate a new pod inside that node or in another healthy worker node.
kube-proxy: kube-proxy is used to manage the network configuration of the cluster. It makes a network communication for all the nodes, across all the pods and containers. It is responsible to update the iptables on each node.