DEV Community

Cover image for What is kubernetes
Yashwant Patil
Yashwant Patil

Posted on

What is kubernetes

About Kubernetes:
Kubernetes is a powerful opensource system Container Orchestration tool, Which manages the containerized application at very large level. Kubernetes is written in GO language.

Kubernetes provides all the features which needs to run docker, podman or rocket (RKT) based container applications. It aims to provide better ways of managing related, distributed components and services across varied infrastructure.

Kubernetes is a platform which designed to completely manage the life cycle of containerized applications and services using methods that provide scalability, high availability and many more.

Using Kubernetes the user can define , how the application should run and how should it talk with the other applications. User can scaleup and scale down the services accordingly.
Kubernetes can provide the Dashboard also which can help to manage the application easily.

Kubernetes can provides the :

  • Cluster Management
  • Scheduling
  • Service Discovery

Kubernetes Born and Designed by Google, later on Google donated Kubernetes to Cloud Native Computing Foundation (CNCF). Now Kubernetes is maintained and managed by CNCF.

Kubernetes released in mid 2014 , and the first version of Kubernetes is released in 2015.

Kubernetes Architecture:

Alt Text

There are two main blocks inside Kubernetes architecture.

  • Master Node
  • Worker Node

At Master Node:

Inside a master node there are four main components:

  • API Server
  • Schedular
  • Control Manager
  • ETCD

1)API Server:

One of the most important master services is an API server. We can called it as gate keeper. This is the main management point of the entire cluster as it allows a user to configure Kubernetes and user can interact with configured cluster workloads and organizational units.

It is also responsible for making sure that the etcd store and the service details of deployed containers.

API Server validates and configures the API objects like Pods, Services and Deployments. It also responsible for exposing various API’s. User will interact to the API through kubectl tool.

2)Schedular :

The process that actually schedules the pods or workloads on specific node across the cluster .It schedule the pods according to the specifications provided and it looks the appropriate node having that configuration.

The scheduler is responsible for tracking available capacity on each host to make sure that pods are not scheduled in excess of the available resources.

3)Controller Manager:

Controller Manager ensures that the node are up and running. The provided number of pods are running or not.

There are several control manager works behind :

  • Node Controller
  • Replication Controller
  • Endpoint Controller
  • Service Account Controller
  • Token Controller

3) etcd:
The etcd project, developed by the team at CoreOS,
it is one of the fundamental components of Kubernetes.
It is a distributed Key-Value light wight database.
etcd is a central database that stores the current cluster state at any point of time and it also stores the configuration of data of node of cluster.It can also use for service discovery.

At Worker Node:
In Kubernetes, systems that perform work by running containers are known as worker nodes.

There are three components:

  • Kubelet
  • kube-proxy
  • container runtime

1) Kubelet :
The main contact point for each node with the cluster group is a small service called kubelet.

kubelet is a primary node agent that run on each node. primary objective of kubelet is:

  • it Looks towards the pod's specification which is submitted by the Api server which is on kubernetes master and it ensures that, the specified number of pods are running and healthy.
  • In case the kubelet notices any issue with the pods running on worker nodes, then it tries to restart the pods on the same node.
  • But if the kubelet notices the issue with node itself, then The kubelet communicate with the scheduler which is on kube-master.

2) Kube-proxy :
kube-proxy is one of the important component of worker node. It use to manage the individual host subnetting and make the services available to other components, a small proxy service called kube-proxy is run on each node.It is responsible for network configuration.

3) Container Runtime:
It is the component that each node must have is a container runtime. Typically,in container runtime we have to install and run Docker,but alternatives like rkt (rocker), Podman and runc are also available and it is aslo responsible for starting and managing the containers.

The next part of this series will come soon...keep supporting..!!

Top comments (0)