Kubernetes Components and Architecture
Tags: kubernetes, devops, opensource
Published: 2021-02-10 17:16:54

<em>Most of us are well aware that Kubernetes is a 'Container Orchestration Tool'. Naturally, it shoulders the responsibility of learning Kubernetes components and architecture, adhering to its working. This open-source platform that deploys and manages the containers is of great help during your productivity that is economical and undoubtedly a future proof solution. But how does the architecture help in achieving all these goals?</em>

To make our understanding better, let us consider an analogy for the Kubernetes - "The Kubernetes Kingdom"!

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/lm7z2k889x237dx6bzlh.jpg)

<blockquote><a href="https://dev.to/gitlabc/kubernetes-in-a-pod-26ao">Feel like catching a fleeting glance of Kube? Then you ought to check his out.</a></blockquote>

As we are all aware, the purpose of using Kube is to host your application in the form of containers to automatically deploy your application's instances as many as you require. Here in the Kube Kingdom follows the working principle according to the 'Master-Slave Architecture'. On the Slave side, we have the hard-working Labourers and the monitoring Supervisors forming the Worker Nodes which deploy the applications and carrying the containers with the consent of the Master node. 

On the other side of the architecture, we have the King playing the role of master, who guides and is the prime decision-maker for all the deployments. The Master node manages the Kubernetes cluster concerning different nodes and the destination of the containers. Let's get into the detail of the components of the master node.

* <u><b>kube-apiserver:</b></u> This API Server plays the role of Chief Minister who primarily is the component that manages and establishes communication among all the elements in the Master node. The kube-apiserver is responsible for operational orchestration of all the components. Exposing the Kubernetes API, kube-apiserver is the frontend of Kubernetes control plane, thus managing and deploying more instances.
<br>

* <b><u>etcd:</u></b> As a Chief Administrator in the kingdom etcd holds the back-up(database) of all the cluster data in the form of Key-Value pairs. They're highly consistent and maintain even the smallest data of the worker nodes.
<br>

* <b><u>Kube-scheduler:</u></b> The kube-scheduler guides the juvenile pods to its new node to run them, thus qualifying to be a Manager for the Supervisors. It schedules the pods considering the availability of the space, its destination and the capacity.
<br>

* <b><u>Control Manager:</u></b> Now since we have a Kingdom, we are bound to have different Provincial Administrators, which in this case are: Node Controller, Replication Controller, Endpoint Controller and Service Account & Token controllers. Though logically different, they run as a single process.
<br>

* <b><u>Kubelet:</u></b> Kublet works as a Secretary who directly report to the Chief-Minister-kube apiserver. It runs on the node of every cluster monitoring the cluster's functionality on every pod.
<br>

<h2>Takeaway notice points:</h2>

* A network proxy called kube-proxy works on every node of your cluster that executes Kubernetes Service Concept.
* The software responsible for running the containers is Dockers. A few other container runtime software is CRI-O and Containerd.
* 
<div class="ltag__link"> 
  <a href="/allericksha" class="ltag__link__link"></a>
  <a href="https://dev.to/allericksha/drilling-down-kubernetes-cheat-sheet-2f83" class="ltag__link__link">
    <div class="ltag__link__content">
      Looking out for Kube Cheatsheet? Check out this blog
    </div>
  </a>
</div>



<center><div><table class="bottomBorder"><tr><td><a href="https://gitlabcbe.substack.com/">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hplp6opfpywirwur2vmz.png "Official Website")</a></td><td><a href="https://twitter.com/GitlabC">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/00qhd8v9ma2t2l2xv4xh.png "Twitter")</a></td><td><a href="https://www.meetup.com/GitLab-Meetup-Coimbatore/">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/aqq6pi897bk687d3kwwa.png "Meetup Community")</a></td><td><a href="https://www.linkedin.com/groups/8955040/">![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8u4886rik46g1bvvrx8d.png "LinkedIn")</a></td></tr></table></div><center>![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/btpzfoja85ps8d28nx7c.png)