The term Kubernetes (or K8s) sounds very interesting, right? Well then what does one mean by Kubernetes. If you google for the definition of Kubernetes, it says, “Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management. It was originally designed by Google, and is now maintained by the Cloud Native Computing Foundation.”

First

Ah, that a lot of technical terms in a single sentence. Let’s break it down into simple words. So, what are “containers”. Containerization is a lightweight alternative to full machine virtualization that involves encapsulating an application in a container with its own operating environment. In simple terms, containers are VMs without it’s own operating system.

Then why should we learn Containerization when VMs are more easy to setup. Well, VMs take up a lot of system resources. Each VM runs not just a full copy of an operating system, but a virtual copy of all the hardware that the operating system needs to run. This quickly adds up to a lot of RAM and CPU cycles. In contrast, all that a container requires is enough of an operating system, supporting programs and libraries, and system resources to run a specific program. What this means in practice is you can put two to three times as many as applications on a single server with containers than you can with a VM. In addition, with containers you can create a portable, consistent operating environment for development, testing, and deployment. That’s a winning trifecta.

So let’s sum up. Now we know what containers mean. So, Kubernetes helps in automating the process of deployment, scaling and management of the containers. The term “automating” is the reason behind this sudden hype for this system. So what Kubernetes does is that it automatically scales the application according to the needs. Well suppose you have designed an application for like 500 people. Assume your application has gone viral. You are receiving say 50,000 requests now rather than 500. So, now you have to scale up your server to be able to host the server for 50,000 people. We have to admit, scaling up a server is a tiresome job. First you need to create a server with the capability of hosting 50,000 requests and then moving your existing application to the new server. This transfer of application from one server to another creates a down time for your application. This might be trivial for you, but imagine any google service to be down for even 10 mins. This little down time could cost Google in millions.

This is where Kubernetes comes into play. Containerizing an application makes it lightweight and portable. As the requests to the server increases, Kubernetes distributes the containers over more servers, thus keeping the application up and running all the time with a minimum down time.

Well, this was just a simplified explanation of Kubernetes. It has many other technical specifications which leds to few disadvantages too, but much of those disadvantages could be suppressed by just making few changes to the containers .

First

Simplified Architecture of Kubernetes System

If you want to know more about Kubernetes then visit their official page.

Note: I do not promote any particular product. The intention of this blog is to give a better understanding of new technologies.