Containerization quickly became one of the largest emerging software technologies of the past decade. Docker, the largest of container providers, has become the defacto standard when it comes to packaging up code and dependencies into units of software. Docker is an open-source project that automates the deployment of applications inside software containers, for the sake of making it easier to create, deploy, and run applications. By using a container, developers can ensure that their application will be able to run on any Linux machine, regardless of the differences that machine may have from the ones used to write and test the code.
Containers can save costs by reducing infrastructure resources. They enforce standardization across environments, allowing for parity in the service infrastructure across an entire pipeline. They ensure consistent environments from development to production, making continuous deployment and testing easier. They also, in the case of Docker, provide version control, to easily allow the rolling back of changes to a working version. All of these reasons and more are key to understanding their massive adoption rate over the last handful of years.
There has been some confusion as of late in regards to Docker and, the new darling of the container world, Kubernetes. Contrary to the belief of some, these two IT technologies are not competitors. When people write about “Docker Vs. Kubernetes,” they are referring specifically to “Docker Swarm Vs. Kubernetes.”
Docker Swarm and Kubernetes are both container orchestration systems. What that means, is that they both provide an abstraction to make a cluster of machines behave like a singular unit, which is incredibly helpful in a large-scale environment. The former is Docker’s native clustering solution, while Kubernetes was developed by Google before becoming open-source and donated to the CNCF.
Kubernetes has fast become the market leader for orchestrating containers and deploying distributed applications. Kubernetes is highly modular, can be run either on a public cloud service or on-premise and benefits from a robust and vibrant community. A vast amount of companies are investing in Kubernetes, with many cloud providers offering it as a service. Google Cloud, Microsoft Azure, and Amazon AWS all now offer official support for Kubernetes.
Kubernetes operates on a concept of pods that are essentially just scheduling units. These units may contain one or more Docker containers inside them and are meant to coordinate clusters of nodes at scale in production. At its core, Kubernetes is simply a toolset created to build and deploy reliable, and maybe most importantly, scalable distributed applications.
Cool As a Kubernetes
Unless you’re well-versed in DevOps, much of the information presented in this article so far might go flying over your head. That’s totally ok. Let’s discuss some real-world use cases for Kubernetes.
Say, you’ve configured Docker for your application to be containerized, and you’re already deployed on a few different servers when a massive influx of traffic hits your app and forces you to scale up fast. Kubernetes was created to handle many of the issues with this situation, and as a result, has been adopted by a growing number of the most frequently visited apps on the web.
Tinder, the popular “dating” app, made the move to Kubernetes when their engineering team faced a ton of issues due to their high traffic volume. They found themselves stuck waiting minutes for AWS EC2 instances to come back online when scaling became critical, and the idea of using containers to schedule and serve traffic quickly was too appealing to not make the switch. After the change, they are now able to get their containers back up and running in a matter of seconds.
The New York Times made the shift to using Kubernetes for their customer-facing applications as well, resulting in an increase in the speed of deployment and productivity. Deployments that had taken up to 45 minutes before making the switch are now done in just a few. Their CTO, Nick Rockwell, shared an in-depth account of the migration to illustrate the freedom it’s given to their developers since they made the change.
Reddit, Airbnb, Pinterest, and even Pokemon Go are all examples of organizations handling their scaling efficiently with Kubernetes. These huge codebases leveraging Kubernetes for their scaling and deployment are also, most likely, a good indicator that the toolset will continue to evolve for years to come.
Kubernetes at Kloudless
Kloudless made the move to offer the management of its Kloudless Enterprise containers with Kubernetes earlier this year. Prior to this move, Kloudless initially only offered Docker containers set up for existing hosts. At the time, deployment was done through full virtual machines using Amazon Machine Images. While this strategy worked well, Kloudless found that tinkering with each customer’s container configuration in order to get the deployment set up was too time-intensive, and Kubernetes was arrived at as a viable solution to the problem.
Kloudless software engineer, Loren McIntyre, was tasked with the job of researching, testing, and ultimately deploying our solution for customers looking to manage their containers. This was Loren’s first major feature as a developer at Kloudless, and while it was a massive undertaking, he relished in the opportunity. As he puts it, “This is exactly what I hoped for as a dev on a new platform.” His enthusiasm was greatly appreciated, as many developers are reluctant to take on such a big job as their first duty at a new position.
Loren built out the container orchestration system for our Enterprise users through official documentation and the occasional helpful blog post. The official Kubernetes documentation pointed him in the direction of outside resources which were invaluable in building his knowledge of the technology and providing the rest of the Kloudless engineering team with a clear and concise picture of the right ways to proceed.
The more time he spent working on the lofty project, the more a picture came together of the declarative infrastructure benefits that awaited Kloudless’ customers who would adopt the new orchestration system. With a single configuration, Kloudless’ could handle a deployment’s DNS, load balancing, and connection to the database all in one go. Thanks to the simple version control in place, customers using Kloudless Enterprise could have their application’s code and state of infrastructure stay in lockstep.
As it stands now, Kubernetes builds are available to any Kloudless Enterprise customer that wishes to leverage the powerful toolset for their organization’s needs. When asked about his ultimate opinion on the experience of implementing such a massively popular and new technology into Kloudless, Loren simply took comfort in the fact that he had helped to bring “one-click declarative deployments to everybody.”
The Future Can Be Contained
Kloudless was able to meet many of its customer’s needs by incorporating Kubernetes into its Enterprise solutions. To get a better idea of what Kloudless Enterprise can offer to your organization, read all about our state of the art hosting solutions here.