What is Kubernetes?
Kubernetes is an open-source platform used to automate deployment and to scale containers across clusters of hosts providing container-centric infrastructure.
- It is a container orchestrator.
- It can run a Linux container.
- Launches a container
- Maintains and monitors the container site
- Performs container-oriented networking
The below image illustrates the architecture of Kubernetes. Let’s have a look at it.
Now, let’s discuss the key points of this architecture.
- Pod: Group of containers
- Label: Used to identify pods
- Kubelet: Container agents, responsible for maintaining the set of pods
- Proxy: The load balancer for pods, helping in distributing tasks across them
- Etcd: A metadata service
- CAdvisor: Used for monitoring resource usage and performance
- Replication controller: Manages pod replication
- Scheduler: Used for pod scheduling in worker nodes
- API server: Kubernetes API server
Now, let’s understand the roles master and worker nodes play in the Kubernetes architecture.
- It is responsible for maintaining the desired state of the cluster we are working on.
- The term ‘master‘ indicates a set of processes that are used to manage a cluster.
- It contains Kubelet service info, API, scheduler, replication controller, and Kubernetes master.
Also called a ‘minion,’ a worker node contains the services necessary to run the pods that are managed by the master.
- Services it provides are Container Runtime, Kubelet, Kube-proxy, etc.
- It contains Kubelet, cAdvisor, Services, Pods, and Containers.
Features of Kubernetes
- Automated scheduling: It provides an advanced scheduler that helps launch containers on cluster nodes.
- Self-healing: Rescheduling, replacing, and restarting of dead containers are possible.
- Automated rollouts and rollbacks: It supports rollback for systems in the case of failures and enables rollout and rollback for the desired state.
- Horizontal scaling: It can be scaled up and down as required and can be automated with respect to the CPU usage.
- Service discovery and load balancing: It uses a unique IP and DNS name for containers that helps in identifying them.