Kubernetes is like pizza: Although it has some fundamental characteristics, it comes in many shapes and flavors. The best one for you depends on factors such as what you plan to do with Kubernetes and how you will manage it.
With that reality in mind, keep reading for an overview of how to choose from among the many Kubernetes services and distributions available today.
The Many Flavors of Kubernetes
Kubernetes itself is a specific open-source platform. You can download, compile, and install it from source code if you are so inclined.
But few people do that. Instead, they run Kubernetes using a distribution or service. A Kubernetes distribution or service is a platform that provides a ready-to-use implementation of Kubernetes. Most include not just Kubernetes itself, but also various plug-ins and configurations required to get Kubernetes clusters up and running quickly.
(It's worth noting that there is some ambiguity surrounding the term "Kubernetes service." It can refer to a specific type of construct within Kubernetes, but that's not what I mean here. I am instead thinking of Kubernetes distributions that are available using a service-based architecture, like Azure Kubernetes Service or Amazon Elastic Kubernetes Service, or EKS.)
Factors to Consider When Choosing a Kubernetes Service
Some of the considerations to weigh when selecting a Kubernetes service or distribution, such as cost, are obvious. Others are easy to overlook.
Do you have your own host infrastructure?
One of the first questions to ask yourself is where you'll be hosting your Kubernetes clusters. If you want to do it on your own servers, you'll need to choose a distribution that can run on private infrastructure. Most — like OpenShift, Rancher, and Platform9 — can do this. So can cloud-based services like Amazon EKS, under certain configurations.
But some Kubernetes services can run only in the public cloud, in which case you're out of luck if you were hoping to bring your own infrastructure.
Are you running Kubernetes for testing or production?
Another basic question to consider is whether you're just playing around with Kubernetes, or if you need production-ready clusters.
In the former case, consider using simplified distributions such as K3s or MicroK8s, which you can install on your laptop if you want. It's only worth paying for a production-grade Kubernetes service if you actually need it for production use.
Do you want bare-metal support?
There are arguments both in favor of and against deploying Kubernetes clusters using bare-metal nodes instead of virtual machines. Bare metal will generally give you better performance, but it can be harder to manage in some respects (although it's easier to manage in others because you don't have to manage a hypervisor or orchestrate VMs).
If you prefer bare-metal Kubernetes, make sure the service you're considering supports it. Some — including most cloud-based Kubernetes services — aren't compatible with bare metal (at least for now).
Do you want multi-site, multi-cluster Kubernetes?
Today, most Kubernetes services support multiple clusters, which means you can use a single control plane to manage more than one cluster. However, only some of them can do this when the clusters run in different locations — such as one in a public cloud and another in a private data center. With some distributions, you may have to run all of your clusters in the same data center or the same cloud.
If you have a complex hybrid or multicloud architecture and you want to spread your Kubernetes clusters across it, you'll want to pay attention to the details of multi-cluster support as you evaluate Kubernetes services.
How much Kubernetes support do you need?
In general, the Kubernetes services that run in the public clouds come with the lowest level of support. You'll get basic support services, but not anything that looks like white-glove support or fully managed services.
You can get a deeper level of service from Kubernetes platforms that aren't tied to specific cloud vendors; note, however, that you may need to pay extra for it.
How opinionated are you about your Kubernetes configuration?
Most Kubernetes services can be customized, but some are more "opinionated" than others with regard to the types of configurations they encourage or supply out of the box. When considering a distribution or service, look at factors such as which CNIs or container registries it supports, and how easy it is to change things like these from the default options if you wish.
With so many services and distributions, the Kubernetes ecosystem is a complex one — and it's going to grow even more complicated as Kubernetes vendors expand their offerings and as Kubernetes itself gains new features. There will never be a universal solution for deciding which Kubernetes service is best, but there is a standard set of questions to consider on the topic.