Kubernetes for the absolute beginner Part I
What does Kubernetes do? In a nutshell, it provides a platform or tool to help you quickly orchestrate or scale up your containerized applications, especially on Docker.
What does all that mean? What on earth are containerized applications and Docker? What is ‘orchestration’? All good questions that we will answer shortly.
Containerization and Containers
Well, first consider a virtual machine (VM), which is, just as the name says, a virtual server that you can connect to remotely, such as the servers you can start on Amazon Web Services (AWS’s) EC2 or on Microsoft’s Azure platforms.
Now, our application is packaged into one VM, which remember, includes our Ubuntu OS. This makes VM’s really bulky – typically a few to several gigabytes in size.
A higher-level container such as the MySQL container will actually include the necessary libraries to communicate and integrate with the lower-level OS container. So you can think of containers as being individual elements of a stack, with each element being dependent on the one below it. And this is similar to how shipping containers are stacked on a ship or at a port, with each container’s stability depending on the one below it for support. So at their heart, application containers are a controlled execution environment. They allow you to define that environment from the ground up, starting from the operating system to the individual versions of libraries you want to use to the version of your code you want to add.
And now, Docker
There are other containerization tools, such as CoreOS rkt, Mesos Containerizer, and LXC. However, according to all the containers surveys, the vast majority (~80%) of containerized apps are run on Docker.
Now Back to Kubernetes
First, a brief history: Kubernetes was originally developed in the mid-2000s by Google engineers for their internal use. In 2014 they released it as an open-source project for use by anyone.
And how does Kubernetes come in when talking about containers? Let’s go back to our containerized web-application example. Assume our app is growing successfully, and we are signing up an increasing number of users every day.