So, you want to use Kubernetes to orchestrate your containerized applications. Good for you. Kubernetes makes it easy to achieve enterprise-scale deployments. But before you actually go and install Kubernetes, there’s one thing you need to wrap your head around: Kubernetes distributions. In most cases, you wouldn’t install Kubernetes from source code. You’d instead use one of the various Kubernetes distributions that are offered from software companies and cloud vendors.
Here’s a primer on what a Kubernetes distribution is, and what the leading Kubernetes distros are today.
What Is Kubernetes?
Before talking about Kubernetes distributions, let’s briefly go over what Kubernetes is. Kubernetes is an open source platform for container orchestration. Kubernetes automates many of the tasks that are required to deploy applications using containers, including starting and stopping individual containers, as well as deciding which servers inside a cluster should host which containers.
Kubernetes is only one of several container orchestrators available; other popular options include Docker Swarm and Mesos Marathon. But, for reasons I won’t get into here, Kubernetes enjoys majority mindshare, and probably majority market share, too, when it comes to container orchestration.
What Is a Kubernetes Distribution?
As an open source project, Kubernetes makes it source code publicly and freely available on GitHub. Anyone can download, compile and install Kubernetes on the infrastructure of their choice using this source code. But most people who want to install Kubernetes would never download and compile the source code, for several reasons:
- Time and effort: There is a lot of Kubernetes source code, and building it all from scratch would require a fair amount of time and effort. Plus, you’d have to rebuild it all whenever you wanted to update your installation.
- Multiple components: Kubernetes is not a single application; it’s a suite of different applications and tools. If you install it from source, you’d have to install each of these parts separately on all of the servers that you are using to build your Kubernetes cluster.
- Complex configuration: Since Kubernetes comes with no installation wizard or auto-configuration script, you’d also have to configure all of Kubernetes’ various components manually.
Most people turn to a Kubernetes distribution to meet their container orchestration needs. A Kubernetes distribution is a software package that provides a pre-built version of Kubernetes. Most Kubernetes distributions also offer installation tools to make the setup process simpler. Some come with additional software integrations, too, to help handle tasks like monitoring and security.
In this sense, you can think of a Kubernetes distribution as being akin to a Linux distribution. When most people want to install Linux on a PC or server, they use a distribution that provides a pre-built Linux kernel integrated with various other software packages. Almost no one goes and downloads the Linux source code from scratch.
What Are the Main Kubernetes Distributions?
Technically speaking, any software package or platform that includes a pre-built version of Kubernetes counts as a Kubernetes distribution. Just as anyone can build his or her own Linux distribution, anyone can make a Kubernetes distribution.
However, if you want a Kubernetes distribution for getting serious work done, there are several main options available:
- OpenShift: OpenShift is a containerization platform that includes Kubernetes along with various other tools needed to run, deploy and manage containers. It’s a relatively inflexible Kubernetes distribution in the sense that it doesn’t give you a lot of choice when it comes to the tools and platforms you can use to build out your full containerization stack. On the other hand, OpenShift comes with almost everything you need out of the box. It’s about as close to turnkey Kubernetes as you can get. OpenShift is developed by Red Hat, and it can run both on-premise and in the cloud.
- Canonical Kubernetes: Canonical, the company that develops Ubuntu Linux, offers a robust and well-supported Kubernetes distribution. Other than requiring you to use Ubuntu, Canonical’s Kubernetes distribution is relatively “pure play” in that you can choose to integrate it with whichever other components you want (as long as you install them yourself). It can run on-premise or in the cloud.
- Google Kubernetes Engine: Google Cloud made a bet on Kubernetes back when other cloud vendors were focused on their own orchestration tools (which is unsurprising, because Google was a major backer of Kubernetes from the beginning of the project). Today, Google Kubernetes Engine is a flexible and simple Kubernetes distribution. Since it runs in Google Cloud, you don’t have to worry about installing it.
- Azure Kubernetes Service: Azure once placed its bets on Docker Swarm, but Azure Kubernetes Service (AKS) is now the main orchestration solution in the Azure cloud. This is a cloud-only Kubernetes distribution.
- AWS Elastic Kubernetes Service: Although Elastic Container Service (ECS), the original container service on the AWS cloud, has its own orchestrator, AWS also offers Elastic Kubernetes Services (EKS), an alternative that is built around Kubernetes. Like AKS, EKS runs only in the cloud.
- Rancher: Rancher’s container platform is now based on Kubernetes. Rancher’s Kubernetes distribution places a special emphasis on multi-cluster Kubernetes deployments, which could be useful if you want to deploy Kubernetes across multiple clouds or for some other reason don’t want to use namespaces (a Kubernetes feature that lets you divide a single cluster of servers into virtual zones) to isolate your Kubernetes workloads. Rancher can work on-premise, in the cloud or even across infrastructure that includes a mix of both. Rancher is similar to OpenShift in that it integrates Kubernetes with a variety of other tools, although it is a bit more flexible because it provides some choice in deciding which components to use.
To say that Kubernetes is a complex beast is to understate. Fortunately, Kubernetes distributions make it easy to take advantage of Kubernetes without all of the fuss and muss of setting up Kubernetes yourself from scratch. For most use cases, one of the Kubernetes distributions described above is the most practical way to get up and running with Kubernetes.