Kubernetes is an orchestration tool/platform to manage, update, scale, reconfigure, deploy and automate the containers, which are called as pods. It was released as an opensource version by Google in 2014 from a properietry tool named as BORG. It is scalable and high available that helps to implement production changes swiftly and is available and supported by most of the cloud vendors.
kubectl is the tool that is used to manage the containers.
e.g. kubectl run nginx –image=nginx
Main Components –
- API Server [AAA Happens here and finally save into etcd file], it is primary interface between control plane and rest of the cluster.
- Scheduler, checks for best fit node/resource to run the container, it checks for the capacity for the worker node and run the pod
- Kube-proxy – maintains the network rules, like one pod/node need to communicate to another pod or node, it maintains the iptables to ensure the communication
- CRI – Container Runtime Interface, Container Networking Interface and Container Storage Interface
- Controller Manager – it maintain objects like replica-sets, deployments, jobs, statefulset, daemonset etc
- Worker Nodes – It runs the applications within containers. these containers with application runs with in the pods.
- PODS – the smallest deployable unit in the kubernetes. Pods can run one or more containers and provides shared network and storage.
3 etc nodes required to tolerate the failure of 1 node [diagram below taken from kubernetes.io website for your reference]