Find the Perfect Kubernetes Distribution
There are many different types of Kubernetes distributions in the container orchestration realm. They range from fully community produced to fully commercial and vary according to the tools and features they offer, as well as the levels of abstraction and control the provide. So which Kubernetes distribution is right for your organization?
Your needs as a user — including the working environment, the availability of expertise, and the specific use case you’re dealing with — determine whether Containers as a Service (CaaS) or an abstracted platform is the right choice. No single, straightforward framework exists to guarantee a perfect decision. Still, the two charts we present below may be a start.
A CaaS platform includes the Kubernetes project, and also packages additional tooling needed for its deployment and management. An abstracted platform, on the other end of the scale, goes well beyond the operational efficiencies offered by CaaS, focusing on increased developer productivity.
With CaaS, developers are required to package their own code in a container so that it may be deployed in a cluster. Even though Docker-based containers address this packaging problem on developers’ behalf, the abstracted application platforms can completely encapsulate the process of building container images internally — automating the process, as opposed to hand-holding the developer along the way. The developer’s task stops once she has pushed her code to a source control tool like GitHub, or to a continuous integration / continuous delivery (CI/ CD) system like Jenkins, and the platform does the rest.
By design, CaaS is closely aligned with the Kubernetes open source project, helping IT to run and manage containers at scale. But a CaaS model expects developers to take care of all of their applications’ dependencies. From a cultural perspective, the DevOps model follows a culture of Dev and Ops working together with cross-functional knowledge. One of the things both teams have knowledge of, in this scenario, is the long list of dependencies.
Abstracted application platforms use Kubernetes as the core component, helping IT run containers at scale with less overhead than CaaS. Developers need not worry about managing runtimes or any application dependencies. Instead, they can focus on writing application code and pushing it to a source control repository or CI/CD system.
Abstracted platforms enhance developer productivity, while taking away control over the underlying components. You can say DevOps is still at the center of this model. But with abstractions, there is no need for this cross-functional knowledge — it becomes redundant busy work. Developers need not understand the underpinnings of Kubernetes or how to manage it.
As we mentioned earlier, there is no straightforward framework for selecting between CaaS and abstracted platforms. Your choice depends on what your organization wants to achieve for developer productivity and the specific use cases you foresee for your organization.
Once you have a good idea about which end of the spectrum between CaaS and abstracted platforms your needs fall, you can start to compare offerings.
We divide the available Kubernetes distributions into four classes. These are the packages and services through which you are able to obtain, or purchase, or purchase support for Kubernetes:
- Community-supported distributions are the free and open source packages with which you can deploy the platform yourself and give it a go. Minikube is a genuine Kubernetes environment for local, experimental deployments on a single computer.
- Vendor distro (no value-add) shows companies that deliver so ware solutions, or cloud-based platforms, that include pure Kubernetes plus vendor-backed support.
- Vendor distro (with value-add) shows companies that offer more complete environments, including scheduling, development, and lifecycle management, featuring Kubernetes at the core of their systems.
- App Platforms / PaaS shows full-scale Platforms as a Service, including Red Hat OpenShift, that actively abstract away the management and maintenance of Kubernetes behind end-to-end, automated development and deployment environments.
For those interested in an even more detailed collection, take a look at this frequently updated, community-managed list of Kubernetes distributions:
Red Hat’s product manager for Kubernetes and OpenShift, Brian Gracely, told us he expects customers’ recognition of Kubernetes to actually subside, as momentum for the platforms that contain it (such as his own, naturally) continue to rise.
“Ultimately, it kind of comes down to, are you building a business model around the idea that eventually, it does become boring?” asked Gracely. “You have a choice of then building some differentiation on top of that, or around that. What we see right now is a very, very healthy ecosystem around a lot of companies that want to be part of this digital transformation age — cloud-native applications — and that’s fantastic.”