What is Kubernetes

Kubernetes is an open source container orchestration platform developed by Google for managing microservices or containerized applications across a distributed cluster of nodes. Kubernetes is highly resilient and supports zero downtime, rollback, scaling, and self-healing of containersThe main objective of Kubernetes is to hide the complexity of managing a fleet of containers. It can run on bare metal machines or on public or private cloud platforms such as AWS, Azure and OpenStack. Kubernetes follows a client-server architecture.

Main Components of the Kubernetes Master Server

  • etcd cluster - a distributed key value storage that stores Kubernetes cluster data
  • kube-apiserver -the central management entity that receives all REST requests for modifications to cluster elements
  • kube-controller-manager - runs controller processes like replication controller (sets number of replicas in a pod) and endpoints controller (populates services, pods and other objects)
  • cloud-controller-manager -responsible for managing controller processes with dependencies on the underlying cloud provider
  • kube-scheduler - helps schedule the pods (a co-located group of containers inside which our application processes are running) on the cluster nodes based on resource utilization

Main components of the Kubernetes Node (Worker) Server

  • kubelet - the main service on a node, taking in new or modified pod specifications from kube-apiserver, and ensuring that pods and containers are healthy and running
  • kube-proxy - runs on each worker node to deal with individual host subnetting and expose services
kubectl is a command line tool that interacts with kube-apiserver and send commands to the master node. Each command is converted into an API call.
High level Kubernetes architecture showing a cluster with a master and two worker nodes (image source)