I’m hearing more and more talk these days of Kubernetes distributions. At a high level, I know what folks mean when they use this term. But when you look around the ecosystem, it’s sometimes difficult to figure out what exactly counts as a Kubernetes distribution because they come in multiple forms.
What It Is Not
It’s easy to define what a Kubernetes distribution is not: It’s not “vanilla” Kubernetes, meaning a Kubernetes installation that you create by downloading the Kubernetes source code from GitHub, compiling it and installing it yourself. Almost no one would install Kubernetes that way because it would take way too much work.
Instead, most people who use Kubernetes install it using a distribution. At a high level, a Kubernetes distribution is any pre-built, prepackaged software platform that includes Kubernetes.
Not only do Kubernetes distributions save you from the hassle of having to download and build a bunch of stuff from source yourself, but most also feature user-friendly installers to help simplify the complex task of installing Kubernetes’ various components.
The 4 Types of Kubernetes Distributions
Beyond these features, however, Kubernetes distributions vary widely in what they actually offer. I think they can be broadly categorized into four different types of distributions:
- ‘Pure’ distributions: These are platforms that offer pre-built Kubernetes and just pre-built Kubernetes. For the most part, they leave it up to the user to choose which other technologies to use to build out a complete containerized application stack. In this sense, these are the “purest” Kubernetes distributions. Canonical Kubernetes and Kontena Pharos are examples in this category.
- ‘Plus’ distributions: These are what I call “Kubernetes plus” distributions. By that, I mean platforms that integrate Kubernetes with other specific technologies, such as certain container runtimes, host operating systems or control-plane add-ons. These are Kubernetes distributions in the sense that they include Kubernetes, but they do not give you the pure upstream version of the technology or the flexibility to set it up any way you want. OpenShift and Rancher (both of which are broad platforms that didn’t include Kubernetes at all in their early days) are examples.
- Kubernetes-as-a-service: If you run Kubernetes in the cloud using a managed service, you are essentially consuming a distribution that is provided by your cloud vendor. These distributions give users the least amount of control. But you can get up and running in just a few clicks, so who’s complaining? Azure AKS, AWS EKS and Google GKE are the obvious examples of this type of Kubernetes-as-a-service distribution.
- Limited-purpose distributions: The final category includes those distributions (or platforms built using Kubernetes) that are intended for a specific and limited purpose. Single-node, “lightweight” Kubernetes distributions such as MicroK8s and K3s are examples. So is (arguably) KubeVirt, a platform that uses Kubernetes to orchestrate virtual machines instead of containers.
Does the Term Make Sense?
Given that Kubernetes distributions come in so many different forms, I sometimes wonder if the term even makes sense.
For perspective, consider the way we use the term “Linux distribution.” It refers to any type of operating system that includes the Linux kernel, as well as other software packaged with it. Linux distributions come in many forms and serve many purposes. But there is no such thing as a cloud-based Linux distribution that is equivalent to something such as AKS or GKE. Nor have I ever heard anyone talk about a Linux distribution that includes just the kernel code itself; you have to add others in if you want to consider it a distribution, in my opinion.
By comparison, a Kubernetes distribution can be several things that are fundamentally different from each other. Perhaps instead of talking about them as if they’re all different takes on the same concept, it would make more sense to use the label to refer only to pure distributions. The other types of distributions described above serve different purposes, and are not really distributions of Kubernetes in the same sense that, say, Ubuntu or Fedora are distributions of Linux.