Google's Kubernetes - natively supported on the Docker platform
Table of Contents
- Some motivation
- What is Docker?
- What is Kubernetes?
- The Good News
- Why not go all the way?
Google’s Kubernetes, is an in-house container-management system they have developed and shared with the world. Did you know that for the last 15 or so years they have been working on building container-management systems? Throughout that period they developed 3 different types of systems, combatting the task of managing Linux containers at mega-scale. Kubernetes was heavily influenced by Google’s Borg system, a large-scale cluster management solution.
Containers and container management systems are technologies behind some of the best applications we use today. So for those of you who are interested in containers, but haven't found the time to read up on them - don't worry we'll shoot through a quick crash course below.
Did you know that Docker and Kubernetes are both technologies that have seen rapid growth over the last 5 years? See for yourself:
Ok, so what can I do with this? Well.. upskilling in Docker and Kubernetes is a pretty good investment, as more and more companies adopt the DevOps paradigm and promote continuous development, as a developer, those skills become far more in-demand. What do companies get out of it? A m-m-muuuch faster way to push code out to production. It is now very common for developers to push features out 2, 3, 4+ times to production each day.
What is Docker?
Simply put, the Docker platform is used to build, ship and run applications. It is used to solve the problem of Oh it works on my computer but doesn't work on yours. This means you can write in any language, using any operating system, bundle your app up in a Docker Image, then you can sleep well knowing that your app will run in production just fine. Docker is a tool that packages an application and its required dependencies into a containerized environment (stripped back Linux OS).
A Docker container is a running process of a Docker Image. Think of the image as an executable package, bundling everything your application needs to run (ie. libraries, a runtime, config files... everything). Docker uses the image to run a container. These containers are hosted on infrastructure and are used to serve your application to your users.
Cloud infrastructure that utilizes conventional virtualization pays a higher price for resource overhead. Container-based technologies today, such as Docker, improve the utilization of data centers and optimization of hardware resources. Gone are the days of using virtual machines to keep the cost down, containers are now the cheapest option. Save that $$$ yo!
What is Kubernetes?
To begin, Kubernetes must be the coolest / diabolical name for an orchestration system to date. That out the way, Kubernetes is simply a system used to manage clusters and clusters of containers. In a distributed environment, sometimes chaos ensues and stuff just breaks. Kubernetes makes sure everything is running smoothly between clusters and resources are allocated efficiently.
Kubernetes manages clusters of containers. These are known as pods. If a container goes down, Kubernetes has an in-built feature to kill off dead containers and boot new containers. This is called self-healing. It helps keep your application(s) highly available and serving your users.
Here is a great video below showing the basics of Kubernetes:
The Good News
Docker let the proverbial cat out the bag by recently sharing that they plan to offer native support for Kubernetes within the Docker platform (update found here). Docker Swarm users rejoice! Now developers have the opportunity to test out Google's Kubernetes orchestration system by loading in the engine at run-time. Why on earth would we want to do this? Well, we may want to utilize features that Swarm doesn't do so well at, cough auto-scaling cough. And while running Kubernetes we don't lose access to the Docker CLI, this seems perfect for managing our Docker utilities.
Why not go all the way?
With this recent update, it poses the question of why not just go all the way? Why not just move to the Google Cloud Platform? After all, Kubernetes was powered by Google. They already have Docker natively set up, so by specifying a Dockerfile in your app's directory, then pushing your app up to the GCP, Kubernetes will be managing your Docker containers! Here is a link to the GCP service for further information.
To cap off, Kubernetes and Docker are powerful technologies that look to be skyrocketing in popularity. Like any technology, there is a time and a place for its use. Evaluate the opportunity by deciding whether you need something in-house (top secret) - then setting up Kubernetes through Docker might be for you. Otherwise, why not try out the Kubernetes engine on the Google Cloud Platform? Saving you time configuring and maintaining your pods. Make sure to head over to Axalon and receive $500 free GCP credit, if you decide to do some experimenting on the cloud.
Recommended product: Coding Essentials Guidebook for Developers