Who’s Using Kubernetes?
Kubernetes is a popular container orchestration tool produced under the auspices of the Cloud Native Computing Foundation.
Kubernetes clusters automatically take care of the networking, autoscaling, storage, alerts and monitoring for your containers. Once properly set up and configured your workloads will perform better, suffer less downtime and need much less direct maintenance.
Lots of organizations are already using Kubernetes in production—like the ones listed on the Kubernetes case studies page, including eBay, Buffer, Pearson, Box and Wikimedia. But that is not a complete list. Kubernetes is even more versatile than the official case studies page suggests.
To prove it, in this post we’ll take a look at other companies that are using Kubernetes for mission-critical workloads.
The GitHub core application is written in Ruby, and was a monolith since its inception. However, as the GitHub community grew, and more developers started to contribute to building the GitHub app, they wanted a way to manage each feature of the app separately, in order to develop and deliver them independently.
Interestingly, GitHub decided to migrate in phases. In the first phase they migrated only stateless loads. They started with a few physical servers, following Kelsey Hightower’s guide to ‘Kubernetes the hard way.’ This is the manual way to install Kubernetes, but it is foundational to mastering Kubernetes management later. Once you’ve mastered the manual installation, you can move to automating each step later.
As it looks to the future, GitHub expects to also move stateful workloads to Kubernetes. It’s already seeing a great improvement in delivery of new features, which has become faster and easier. The company’s Site Reliability Engineers can focus on improving the performance of apps rather than keeping infrastructure up and running—Kubernetes takes care of that now.
Weaveworks provides cloud deployment and monitoring. The company used Kubernetes from an early date, but expanded its use of the platform when it began looking for a way to manage clusters more effectively.
Specifically, whenever they made a change to their cluster, they didn’t want to kill their old clusters and start new ones. The problem with this was that DNS changes were not accurate, even after a week. And they didn’t want to run two production clusters for a whole week during the transition phase.
They started by dividing their stack into three layers—infrastructure, Kubernetes, and application. They then looked for configuration management tools to manage each layer. They decided to use Terraform to manage configuration for the infrastructure layer, and Ansible to manage Kubernetes infrastructure. Ansible made it easy to check their production system against expected configuration, and alert them when anything changes. They also open-sourced tools like terraform-kubernetes, which helps provision VMs, VPCs, and route tables on AWS for running Kubernetes clusters—and another tool, kubediff, which shows you the differences between your live system and your version controlled configuration.
Weaveworks’ story is one of not just getting started with Kubernetes, but also taking it to the next level with better management. Their future plans include automation of cluster management.
Cloudboost is a serverless computing platform that makes it easy to build and run applications. They started out using Chef to manage their infrastructure. It helped automate some tasks- related configuration on VMs, but they faced a lot of issues with configuration, like installing multiple modules. Even after being installed the system was very unstable in production. They would get paged 7-10 times per month.
Last year, they decided to switch from VMs to containers. Though Chef has some options to manage configuration with containers, it has a lot of overhead, and would inherit the same stability issues. They picked Kubernetes instead because it fit their needs perfectly—an orchestrator for containers.
Today, they enjoy a 45-48% cost saving over VMs, and Kubernetes is able to manage their infrastructure and configuration far better than Chef. They get paged just once in a month. They particularly enjoy Kubernetes’ unique features like rolling updates which helps with deploying more frequently and confidently, and auto-scaling which lets their cluster scale effortlessly. Best of all, their speed of delivery has improved so much that they can now release new code that comes in from contributors in minutes.
Movio builds software that helps market movies. They have been running Kubernetes for more than a year now. Similar to Cloudboost, they too used configuration and infrastructure automation tools like Puppet and Jenkins to manage their VMs.
Movio talks about the many benefits of Kubernetes in detail. Scaling is particularly easy with just a single-line change to the deployment file. Kubernetes automatically manages the port mapping and load balancing across the new pods. The Services feature of Kubernetes handles load balancing so that even if the underlying nodes change, the services keep the same ID, and are discoverable immediately after any change.
They use Prometheus for monitoring, and a combination of Fluentd and the ELK stack for logging. They face some issues with getting detailed metrics and centralized logs, and need to further customize their tools to get these benefits.
Kubernetes is a giant leap forward from traditional configuration management on VMs. Containers promise greater scalability, faster releases, more consistency, and improvement management, but it’s the orchestration layer that makes these promises a reality.