What is kubernetes  
Published: 2020-08-25 05:43:32

**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](https://dev-to-uploads.s3.amazonaws.com/i/p5ezd290mpz9dstip6ms.jpg)

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..!!_