If you have been following the latest trends in IT, DevOps and software development, you have probably heard about Kubernetes. Most likely you have seen Kubernetes described as a highly customizable open source platform for managing containerized workloads and services. This is true, but the terminology could be improved. Let's dive deeper...
Kubernetes Open Source Project -- The Kernel of Kubernetes
When you look at the Kubernetes open source project, you are not going to find source code and installation instructions for a platform as advertised. Instead, you'll find source code for a pluggable and highly customizable framework that may be used together with other components to build a platform (as advertised). This is the "Kernel" of Kubernetes.
Just like with Linux, most of us are not interested in the kernel development or building and maintaining our own solution (distro) from scratch, but rather using it. Luckily for us, there is a healthy ecosystem of vendors creating ready-made solutions!
Kubernetes & Interoperability
Based on the latest data available from Cloud Native Computing Foundation (CNCF) -- the consortium of organizations dedicated to ensure interoperability and push Kubernetes ecosystem forward -- there are currently 60 vendors with 70 different products that are based on a version of Kubernetes kernel. These products include installers, distributions and hosted solutions.
Since users want to avoid lock-in to a specific vendor, CNCF is providing software conformance testing to certify these products, and to ensure interoperability and portability. You can see all the vendors and their certification status from the CNCF software conformance web page (also available as a spreadsheet).
Kubernetes installers provide tools for installing Kubernetes. Typically, they are used to create a testing environment that can be safely destroyed after use. According to data from CNCF, there are 8 Kubernetes installers available today. Most of them are open source.
Kubernetes distributions provide all the necessary tools for installing, upgrading and maintaining "production grade" Kubernetes clusters on supported infrastructure (bare metal, virtualization or cloud). Just like with Linux distributions, using a Kubernetes distribution is often easier than building and maintaining a solution on your own.
According to data from CNCF, there are 40 Kubernetes distributions available today. Out of these, 22 are actively developed or maintained (certified against Kubernetes kernel version 1.10.x or better; 1.10 was released in March 28, 2018). Personally I don't care about closed source software anymore, so if we filter out all non-open source Kubernetes distributions, we are down to just 6 Kubernetes distributions (listed in the same order as on CNCF's website):
- Canonical Distribution of Kubernetes
- Cloud Foundry Container Runtime
- Kontena Pharos
- Open Shift
A nice tidy list! Most of these distributions are provided by vendors who also provide commercial support. It would be nice if somebody could make an objective comparison of these. One of the biggest differentiators is likely the supported infrastructure. In the meanwhile, the best way to learn more about them is to just dig in and try them out!
This is the stuff you've probably heard about! This is what Google, Amazon AWS and Microsoft (and many others) are pushing! Kubernetes hosted solutions are designed for those users who are comfortable with the idea of having everything in the cloud, as easy as possible. In most cases, these solutions are based on custom "black box" Kubernetes distribution that is maintained by the cloud provider.
Typically, the cloud provider is charging just for the usage of nodes in the cluster. At a minimum, you'll have a Kubernetes cluster up and running with very little effort but depending on the cloud provider and the way in which the hosted Kubernetes environment is provided, you might need to take care of the upgrades and maintenance work yourself (read: almost the same as running one of the Kubernetes distributions listed above yourself minus the effort required to install).
According to data from CNCF, there are 23 Kubernetes Hosted Solutions currently available. Out from these, 13 are maintained up to the level that meets my criteria (certified against Kubernetes kernel version 1.10.x or better; 1.10 was released in March 28, 2018). Interestingly, one of the key players in this industry didn't make it on to the list: Google. Maybe GKE doesn't pass the certification (non-compliant) or they just are too lazy to make it? Who knows. Here are the Kubernetes hosted solutions:
- Elastic Container Service for Kubernetes (EKS)
- Cloud Container Service
- Cisco Container Hosted
- eBaoCloud Platform
- IBM Cloud Container Service
- ACS Engine
- Azure Container Service (AKS)
- Oracle Container Engine
- Rackspace Kubernetes-as-a-Service (KaaS)
- Cloud Platform - Gardener (AWS, Azure, GCP)
- Tencent Kubernetes Engine (TKE)
- VMware Kubernetes Engine (VKE)
Navigating The Ecosystem
If you are browsing the internet, you'll often find some cool new technology, feature, service or product ("thing") that somehow relates to "Kubernetes". Since "Kubernetes" may be many things (as detailed above) it is essential to have the skills for determining which "Kubernetes" we are talking about and how it potentially relates to you.
Assuming you are not in the business of building and maintaining your own "Kubernetes" and you are currently using (or considering using) one of the certified and well maintained Kubernetes systems, you can try to determine the following:
- Is this new thing an upcoming feature of Kubernetes kernel? This thing will (most likely) eventually come to you via a regular update to the system you are currently using.
- Is this new thing something that very closely relates to physical hardware or infrastructure such as networking, physical volumes, compute or GPUs? This thing might become available to you as a configuration option in the system you are currently using.
- Is this new thing installed on top of Kubernetes? You should be able to install it on top of the system you are currently using, just like that!
- Is this new thing a SaaS (or other) service that is integrated to "Kubernetes" using Kubernetes kernel APIs? You should be able to use this service with the system you are currently using, with no changes needed!
Where to go from here?
If you haven't started your Kubernetes journey yet, now is a good time to get started. You have all the basic knowledge to start digging deeper. Here are my suggestions:
- Try it out locally - Install Minikube that runs on your local machine. It's also an ideal environment for developing small projects.
- Try one of the ready made Kubernetes distributions - Check them out to find the one that suits your needs and has support for the infrastructure you are planning to use. If you don't know what to choose, I recommend Kontena Pharos. It's the simple, solid, certified Kubernetes distribution that works on any infrastructure. Disclaimer: I work for Kontena :)
- Try one of the managed Kubernetes offerings - All cloud providers who offer managed Kubernetes environments have some kind of getting started tutorial. Check them out via the cloud provider of your choice!
- Jump down the rabbit hole - Go to the Kubernetes open source repository at GitHub and start building your own Kubernetes system from scratch. Once you are finished, let me know how deep the hole is! :)
About Kontena Inc.
Kontena Inc. is specialized in creating the most developer friendly solutions for running containers. Kontena's products are built on open source technology developed and maintained by Kontena. Kontena was founded in 2015 and has offices in Helsinki, Finland and New York, USA. More information: www.kontena.io.