How many Kubernetes distributions does the world need? As more and more vendors roll out their own distributions, that’s a question worth asking.
It’s also a question whose answer is No, I think. Let me explain why we don’t need so many Kubernetes distributions.
What is a Kubernetes Distribution?
Kubernetes itself—meaning the source code you can download from kubernetes.io—is not very useful on its own. Setting up a Kubernetes cluster using the source code would require you to compile the code and set up a server environment (or, in most cases, a cluster of servers) to host it, install it, configure it, set up tools to manage it and update it all on your own.
That’s a lot of work, and it’s not a realistic way for most people to use Kubernetes. That’s why a number of companies have created Kubernetes distributions. The distributions provide not just a preconfigured version of Kubernetes itself, but also other important tools for installing and working with Kubernetes. Many distributions also include host operating systems. Some even give you hosting infrastructure in the form of IaaS in a public cloud.
Kubernetes is not unique in spawning an ecosystem of distributions. The Linux kernel has done the same thing. So have other complex software platforms, inlcuding Spark, Hadoop and OpenStack.
How Many Distributions Are There?
By my count, there are currently about 30 unique distributions listed on the Kubernetes website.
It’s a safe bet that that’s not an exhaustive list. There are probably other distributions that aren’t featured on the site. After all, just as anyone can create a custom Linux distribution, there’s nothing stopping you from packaging Kubernetes with a few other components and calling it a new Kubernetes distribution.
Do We Need So Many Distributions?
Now, the big question: Do we really need 30 different ways and counting of deploying Kubernetes?
I don’t think so. To be sure, having some choice when it comes to Kubernetes distributions is a good thing. But I’m not convinced that they are complex enough to justify so many different options.
In general, there are five main variables in a Kubernetes distribution:
- The infrastructure that hosts it: It could be on-premises, cloud-based or both.
- Whether host infrastructure is bundled into the distribution itself.
- Which host operating system it uses. Some distributions run on only one specific operating system; others are compatible with multiple operating systems.
- Which networking framework it uses (Calico, Flannel, Canal or something else).
- Whether it is commercial or community-developed.
Compared to a Linux distribution, that’s not a lot of variability. Building a Linux distribution (or even a Hadoop, Spark or OpenStack distribution, for that matter) requires you to address many more than five core components. You have to think about which kernel version to use and make myriad choices about how to configure it. You have to choose from among tens of thousands of open source software applications and tools to include in your distribution. You have to decide which hardware devices to support, how to manage updates, how to package your software and much more.
A Kubernetes distribution is hardly this complicated. And that’s why I don’t think we need dozens of different Kubernetes distributions.
The Kubernetes ecosystem would be easier and have more direction if it consolidated around a few distributions that could run in any public cloud or on-premises. The cloud-computing companies that offer managed Kubernetes services based on custom Kubernetes distributions that work only in their clouds wouldn’t like that. Neither would other vendors that build Kubernetes distributions that lock users into a specific set of tools.
But having fewer distributions would benefit the community as a whole. It would make it easier to build Kubernetes tools and configurations that apply across multiple environments, without having to worry about distribution-specific issues.
In short: Kubernetes is not as complicated as Linux or other things. You can make a case for why the world needs circa 900 Linux distributions. It’s more difficult to argue for dozens of distinct Kubernetes distributions.