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

Architecture/Interaction

The below image illustrates the architecture of Kubernetes. Let’s have a look at it.

Components of Kubernetes

Key Concepts

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.

Master Node

  • 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.
Master

Worker Nodes/Minions

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.
Worker node

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.