Introducing you to Kubernetes

If you have heard this word thrown around a lot these days and you really don't understand it is and what is the hype behind it, then you have come to the right place. Let me enlighten you about "Kubernetes".

steering wheel.jpeg

Is it just me or these two images look oddly similar?

Kubernetes-Logo-only.png

The word Kubernetes comes from "κυβερνήτης" which is Greek for "helmsman" which means a person who steers the ship.

Kubernetes is a tool that is primarily used to manage containers, a lot of containers.

Think about a scenario where you are having hundreds of containers. Say, you made a change in one of them and now you need to change it on every other container. That wouldn't be a very enjoyable thing to do, would it? This is why we have Kubernetes.

Let's talk about it in more detail.

Kubernetes works on a cluster. A cluster consists of nodes. Nodes are either virtual machines or physical machines (bare metal).

Inside the cluster there are -

Master node (also called Control plane) and Worker nodes.

Worker nodes is where all the container are running. Master node is responsible for managing and overseeing everything that is going on there.

kubernetes bird eye.jpg

Master node

First let's talk about the the Master node.

It has 4 components - API server, Controller Manager, Scheduler and etcd.

API server

api-server.png

API server is the component through which you communicate with the entire cluster. It is the entry point to the cluster and this is where you give all the instructions. We can do that through the command line interface i.e "kubectl" or the graphical user interface i.e Kubernetes Dashboard.

Controller Manager

controller manager.png

Controller Manger is where the control resides. It oversees everything that is happening inside the cluster. Did a container just die? That needs to be restarted. Does something need to be repaired? All of that is managed by Controller Manager.

Scheduler

scheduler.png

Scheduler schedules the creation of containers where is sees fit according the workloads of all the worker nodes. It looks at the amount of resources (CPU usage, Memory usage etc.) used by each worker node and creates new containers where the resources are least utilized.

etcd

etcd.png

etcd takes snapshots of the whole cluster. You can think of the snapshot as a photograph that has status data of every node and each container inside that node. You can recreate the whole cluster using these snapshots.

Worker Nodes

Now, lets talk about the worker nodes.

All the containers are run inside these worker nodes. In Kubernetes you have what is called 'pods'. Pod is like a wrapper over the container that abstract away the container.

Every worker nodes has 3 basic components - Container Runtime, Kubelet and Kube Proxy.

Container Runtime

Container Runtime, also called the container engine is the software that you need to run containers on your host operating system. Docker is by far the most popular one.

Kublet

kubelet.png

Kubelet is that component which takes all the instructions and configurations from the control plane and create the pod inside that worker node. It assigns the amount of resources (CPU, memory, storage) the container needs from the worker node. It acts as the bridge between the container runtime and the worker node.

Kube Proxy

kube proxy.png

Kube Proxy takes care of all the networking inside the worker nodes that is needed to efficiently manage these pods.

That was the general overview of Kubernetes and I hope it has given you some clarity about Kubernetes, an open-source container orchestration system for automating software deployment, scaling, and management!

Well, that was mouthful :) Want to connect, contact me on Twitter or Linkedin.

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐