Kubernetes may not be perfect, but there’s no denying that a lot of people love it. Indeed, Kubernetes provides orchestration for more than three-quarters of containerized applications today. But what, exactly, makes Kubernetes so popular? That’s the real question for developers and software vendors to answer if they want to keep on building upon Kubernetes’ success. Here’s a look at four major reasons why people love Kubernetes today.
1. Kubernetes is fully open source.
I suspect that the single reason why Kubernetes is so popular is that it is a completely open source platform.
That’s a key differentiator between Kubernetes and other container orchestration tools. AWS ECS, which is one of the only really viable alternatives to Kubernetes today, is proprietary. Docker’s Swarm orchestrator is open source, of course, but the Docker platform as a whole hasn't been completely open source for all of its history. (If it had been, I think Docker probably would have gained an edge over Kubernetes, but that’s a story for another time.)
The fact that Kubernetes is open source matters not just because of the warm and fuzzy feelings that open source conjures among some developers, but also because it has encouraged the creation of an expansive, dynamic ecosystem surrounding Kubernetes. No matter what you want to do with Kubernetes--like orchestrate VMs in addition to containiers--or which storage system or networking architecture you want to connect it to, there is probably an open source tool to help you do it. If Kubernetes itself were closed-source, it’s hard to imagine such a thriving ecosystem surrounding it.
2. Kubernetes manages everything through code.
Although there are GUI dashboards for Kubernetes, I’ve yet to meet a developer or IT engineer who manages Kubernetes primarily through a GUI. They use command-line utilities and deployment files instead.
That’s not because the Kubernetes GUIs aren’t good enough. It’s because the ability to do everything in code using a consistent set of tools and formats (like kubectl and YAML files) is part of what makes Kubernetes so powerful. When you define and manage every aspect of your software stack through code, your processes become much more repeatable, scalable and reliable.
3. Kubernetes runs anywhere.
Another major reason why Kubernetes is so popular is that it runs anywhere. Kubernetes often goes hand-in-hand with the cloud because Kubernetes clusters are frequently hosted in the cloud. But Kubernetes is also perfectly capable of running on-prem, in a colocation facility, or even in all of these places at once, if you use Kubernetes as a hybrid cloud solution.
It’s easy to take Kubernetes’s infrastructure-agnosticism for granted. But if you step back and think about the history of Kubernetes and the business environment in which it exists--such as the fact that Google created Kubernetes, and companies like Google, Red Hat/IBM and Microsoft dominate Kubernetes development--you realize that it didn’t have to be this way. It’s easy to imagine a world where Kubernetes was designed only to run on certain clouds, for instance (I suspect Google, Red Hat and Microsoft wouldn’t mind if Kubernetes weren’t AWS-compatible), or where it doesn’t work on-prem (in which case you’d have to pay money to a cloud provider like Google, Microsoft or IBM to run it).
But that’s not the world we live in. Kubernetes works anywhere and with anything. (Well, you can only manage Windows servers as worker nodes and not masters, but that’s a pretty minor limitation.)
4. There is minimal Kubernetes fragmentation.
Along similar lines, it’s worth appreciating the remarkable extent to which the experience of deploying and managing Kubernetes is the same, no matter which Kubernetes distribution you use or where you host it.
Sure, there are some subtle differences. OpenShift has a different command-line tool and a handful of features that are not present in other Kubernetes variants. Most of the managed Kubernetes servers have proprietary processes for upgrading to newer Kubernetes versions. Some also use proprietary access control and identity management frameworks within Kubernetes.
But in general, Kubernetes skills and resources are reusable across any environment or configuration. This makes Kubernetes much less fragmented than, say, Linux, where processes like installing software or setting up the network can be wildly different from one Linux distribution to another.
Your reasons for loving (or, for that matter, hating) Kubernetes may vary. But by and large, I suspect that factors like being completely open source and providing a consistent, code-based administrative experience across all configurations are why Kubernetes has proven the most popular container orchestration tool by far.