Kubernetes: What is it and how does it work?
In the last few years, Kubernetes has become one of the most-discussed and most important application management systems in the software development world. Originally built by Google as an open-sourced solution to the ever-increasing need for virtualization and the increasing demand for container-based application deployment worldwide, it is now in its eighth iteration and is the most popular platform for managing containerized workloads and services available.
In order to get more insight into this cutting edge platform, we spoke to Roberto Balarezo, Jobsity’s in-house expert on all things Kubertetes. We wanted to understand what makes Kubernetes unique, what makes it powerful, and what it’s like to work with Kubernetes as a member of Jobsity’s top-notch nearshore development team.
Thanks for taking some time to chat with us Roberto!
No problem; it’s my pleasure.
So, to begin, can you give us a short introduction to Kubernetes?
Of course. Simply put, Kubernete is a technology developed by Google beginning in 2013-2014, based on their knowledge and experience with certain cloud-based applications (think: Google Drive, Google Docs, Google Calendar). It was meant to help companies deploy products faster and manage production environments. In other words: tech for managing applications that require containers.
Sure, when an application is going to be run in a distributed environment, it needs to be held in a unifying way--so that it works the same in every instance, and so that all the materials necessary for its function are present. In other words: it needs a container.
Ah, I see. And Kubernetes works with these containers?
In a way, Kubernetes manages these containers. And my job, as a developer working with Kubernetes, is to take my clients applications, and to package them in a specific way into a specific container which is compatible with Kuberetes.
And what’s the advantage of this compatibility? Why do this?
First, scalability: it’s easy to scale apps with Kubernetes. That’s the main selling point. If your app is properly configured--which I’ll make sure it is--then it’s easy to scale. You just change one property and Kubernetes takes care of the rest.
Most Google products (Meet, Gmail, even the search engine) all run in a version of Kubernetes. Their products are an example of how a suite of applications can use Kubernetes, and what some of the functional and scale advantages of Kubernetes can be.
So what’s one of these advantages of Kubernetes?
It’s an easier way to deploy apps because you simply “declare” what needs to run and how resources will be deployed and Kubernetes decides the rest. So now a programmer doesn't have to do all the individual declarations and deployments themselves. They just set it up once, and Kubernetes automates the process from there.
Sounds powerful! How do you decide if an app can benefit from Kubernetes?
To start, you don’t apply it to a project--it comes out of necessity. And it comes with a cost: You have to maintain and monitor it. It can't be blindly applied. But if you think you'll need to run your project in Kubernetes because it’s going to scale, then you have to convert or package the app into the right container. This isn’t hard, but if the app is not prepared to work in a distributed way, it can be a bit complicated and might require more changes. But it’s all part of the work we do.
Makes sense. Can you give us an example?
Of course. In my current project, we already had a distributed app and it lived in Google Cloud. So we declared the relationship between all the modules, all the dependencies, and created roles for the app to run, connections between them so the network would allow them to communicate. This lays the groundwork for running on Kubernetes. Soon, we’ll need to augment the process of creating the containers, and after that it’ll be set up to be managed by Kubernetes.
At that point, we can hand it off to the DevOps to maintain it and our work is done.
Sounds both complicated and simple!
Well, the basics of Kubernetes are not hard to learn, and I think may soon be a skill that everybody would need in order to build applications. But the intricacies of Kubernetes can be quite complicated. At a certain level, it can be quite specialized knowledge. I’ve been managing Kubernetes at Jobsity for about a year, and I’ve gone through quite a few pain points already. At this point we really understand what it is to work with it.
So if I need a hand with Kubernetes, I can just ask you?
Certainly. I’ll be standing by.
If you want to stay up to date with all the new content we publish on our blog, share your email and hit the subscribe button.