What in the world is Kubernetes?

Veeresh Neralagi
4 min readJan 28, 2021

--

Don’t be surprised nowadays if you’re constantly hearing about new technologies that companies are migrating to. At times, it can be super overwhelming to stay up to date with everything, but I really feel as though attaining some sort of high-level understanding of these technologies can help you to the connect the dots architecturally and make sense of software platforms/applications.

Kubernetes has been around for 6 years so far. Developed by Google, it is now one of the most commonly used container orchestration systems. But what is a container orchestration system? Essentially, it is a platform that allows you automate the deployment, scaling, and management of software applications. Before we can get into the details of Kubernetes, let’s dive deeper into the gist of what a container orchestration system is. If you are already familiar with this concept, feel free to move on to the next section.

What is a container orchestration system?

For abstract products such as Kubernetes, one strategy that has allowed me to understand its functionalities is by creating simple real-world analogies for myself. Let’s look at what a container orchestration system is from the perspective of a restaurant.

In a restaurant (the software application), we have the chefs (development and management/QA) and waiters/waitresses (deployment and scaling). Once a dish is made by the chefs and they approve the dish of its quality (application is built and passes quality assurance tests), a waiter/waitress is then required to deliver the food to the customer in a timely manner (deployment of software). This is an extremely simple use case where we have described how software is built and then deployed to a single customer. But now let’s say our customer base has grown by over 100. Now how does this system work? How do we scale? There are a multitude of ways to do this, but here are three common strategies:

  1. Simply hire more chefs and waiters/waitresses (more developers).
  2. Invest in specific tools that allow the chefs and waiters/waitresses to cook and serve more customers in a seamless manner (cloud providers, load balancing tools, etc.).
  3. Do both.

Overall, maintaining this whole cycle of food production, food delivery, and scaling to more customers is essentially what a container orchestration system is- it allows an admin to oversee all the different changes and productions being made within an application, and then allows them to make necessary changes in order to deploy the application to the entire user base. Now, let’s discover more about Kubernetes and its various components.

Dissecting Kubernetes and its Abstractions

For the sake of obtaining just a general understanding of Kubernetes, we’ll go over 4 important components and tie them together: clusters, nodes, services, and pods.

A Kubernetes cluster is essentially where applications are run and controlled. Within a Kubernetes cluster, there are Kubernetes nodes, which, generally speaking, correspond to a virtual machine/server that hosts the application and communicates with the Kubernetes master/control-node (the ‘admin’).

Source

We’ve already entered a rabbit’s hole in terms of discovering Kubernetes components- there are always components within components. But let’s go over one particular Kubernetes node component- a Kubernetes pod.

This is where the containerized application is actually stored and run. These containerized applications can come from a multitude of container tools, such as Docker, Kubernetes itself, AWS, Azure, etc. To learn more about what a containerized application is, check out this article.

Source

Now that we have a general understanding of a Kubernetes cluster, node, and a pod, let’s review how all of these components come together and talk about the final component: Kubernetes services.

Source

As seen in this Kubernetes cluster diagram, we have 3 Kubernetes nodes that allow the application to be hosted from 3 separate virtual machines/servers, and within each node we can see the Kubernetes pods which store and run the the containerized application from a particular name and IP address. Lastly, you may also notice a yellow dotted line that wraps around all the pods within each node. This represents a Kubernetes service, which is responsible for the load balancing and allocation of names and IP addresses to each pod. Kubernetes services are vital to any container orchestration system architecture since they allow an application to be scaled.

Final Thoughts

This may be a lot to take in at first if you aren’t too familiar with the software development cycle, but I highly recommend visualizing these abstract concepts in the form of real-world examples to get a general understanding of them.

Like Kubernetes, there are many other container orchestration system platforms out there that achieve this functionality. Being able to test, build, and deploy software continuously for a user is vital for all software companies- at the end of the day, customers want to have the product they’re using available and functioning (as well as improving) at all times.

Resources/Links

  1. https://kubernetes.io/docs/tutorials/kubernetes-basics/
  2. https://www.docker.com/resources/what-container

--

--