Kubernetes is an iceberg
It’s no secret that Kubernetes is hard to grasp*. Complexity and the steep learning curve are some of the reasons why Kubernetes annoys so many users. As a result, many companies that could benefit from Kubernetes adoption avoid maintaining clusters themselves and outsource them to managed service providers. As experts who have been working with the orchestrator since its launch, we understand them well.
While preparing for DevOpsConf 2021, we came up with a simple metaphor of Kubernetes as an iceberg to visualize the problem of its complexity.
When you first start learning Kubernetes, the very top of the iceberg looks plain and uncomplicated: Docker, Pods, Deployments, Nginx. Then you stumble upon Secrets, Jobs, Ingresses, ConfigMaps, and Services. Those are a bit more tricky but still okay, aren’t they?
However, the deeper you dive, the harder it gets. How confident will you feel out there in the depths? What kind of expertise do you need, and what do you want to be able to do?
Our experience in providing Managed Kubernetes services and developing our own Kubernetes platform shows that the first two levels are sufficient for most (say, 85%) tasks. This level of proficiency in K8s and its primitives is essential for most developers today.
Of course, you can dive even deeper. Log collection, horizontal scaling, working with StatefulSets, Helm templating – this is the knowledge that every senior developer should have.
What’s next? Closer to the bottom, things get even more intriguing. Okay, a true Kubernetes geek should know how to deploy Kubernetes, connect to Service Discovery, and use PromQL to interact with the Prometheus monitoring service, among other things. Here, in our opinion, common sense suggests that there is no point in digging any deeper. Equipped with this knowledge, you will be able to solve 99% of your Kubernetes tasks.
Who is ready to dive into much darker depths? Who is willing to use their resources to create KEPs (Kubernetes Enhancement Proposal) to improve Kubernetes upstream? Does it make sense to employ an in-house team to handle such tasks? Probably not.
That is why many users prefer managed Kubernetes offerings (such as Google GKE or Amazon EKS) or ready-to-use platforms such as OpenShift, Rancher, and Deckhouse — instead of managing K8s on their own.
But back to the iceberg…
After that conference, many people who liked the K8s iceberg asked us to share it with the broader community.
Thus we’ve recently featured it on Reddit, Facebook, Twitter, and LinkedIn. The community response has been impressive: hundreds of thousands of views, tons of likes & reposts. This iceberg essentially became a meme in some way.
Another remarkable outcome of our post was Anton Sankov’s “Demystifying the Kubernetes Iceberg” series of articles. The author set himself the ambitious goal of explaining all the components of the iceberg turning the meme into something really practical.
We are happy to see how our simple metaphor facilitates knowledge sharing. As more people dive deeper, the less “scary” the iceberg becomes. That is true even for those who don’t use the technology directly.
* P.S. Kubernetes is hard
This popular belief is not just about the “Kubernetes The Hard Way” tutorial by Kelsey Hightower (which is more than great, by the way!). The Why K8s is so complicated discussions have been popping up here and there for years.
Here are some articles reflecting what people think about Kubernetes’ complexity:
- Kubernetes is complex because you want complex things (by Natan Yellin from Robusta, Apr’2022);
- Two reasons Kubernetes is so complex (by Nelson Elhage from Anthropic, Jan’2022);
- Why is Kubernetes So Damn Complicated? (by Tennis Smith from Appvia, Nov’2021);
- Kubernetes’ Complexity (by Jeff Geerling from Acquia, Jun’2018).
And what are your thoughts? Is there anything you would like to change about the iceberg? Feel free to share your feelings and suggestions in the comments below!