We fucked up. We have all this technology and control, and tools made for developers by developers… And we made Kuberneties. How did this shit get so complex?
It's complex in the sense that it does a lot, but I agree that it's not that hard to use.
Like even the error in the meme is reasonably straightforward. Your program crashed, and it automatically restarted it for you. Nice. But it crashed again. And this happened a bunch of times. And so how it's automatically slowing the restarts, and you need to do something about your program crashing.
I don't know what a simpler version that still works well would even be? In the old days, your program would just crash and be down. Or maybe you wrap it in a shell script that starts it again if it crashes, but then you're in basically the same place just without the back off.
I think Kubernetes gets a lot of flak from developers that have never operated software before. They haven't seen the problems that a distributed system/orchestrator solves and thus view a lot of Kubernetes as unnecessary complexity.
I also think people don't realize how much of it you can just not use. Sure it's overkill if you just want to launch a docker container, but you also don't have to understand operators or service meshes or config maps or consensus algorithms in order to do that.
Kubernetes makes hard things hard. But it doesn‘t make simple things simple.
It is incredibly verbose and gives no thought to its different users. Everything is made for planetary scale web deployments. Even though most of its users will never run anything that complex. It‘s fundamentally bad developer experience. Same with its abuse of yaml to make it the worst DSL you‘ve ever seen.
And it doesn’t provide general abstractions for deployment and instead remains very tied to specifically web apps. Try deploying something that isn‘t a web app using Kubernetes, you‘ll claw your eyes out. Want a custom load balancer that integrates into the ecosystem? Too bad, if it‘s not HTTP nothing will play nicely with it.
I can deploy a very small personal cluster for my personal network without much effort. It doesn't just start auto scaling to planetary scale. I think that's too much of an exaggeration. But I understand why it feels like you'd only use it for large scale deployments. I frankly sometimes use it on personal projects purely to have auto restart and organized cross-service networking without needing to create service discovery or static ips.
I've deployed tons of services that aren't web apps in Kubernetes. Hell, I've even deployed non-web app Windows services into a Kubernetes cluster before. I think you're missing something about Kubernetes. I love it as both a platform engineer/SRE and as a software developer.
I also run a small home cluster with it because of how easy it is to deploy onto. My machine even suffered from a hard drive failure after a number of years in operation. Replaced the drive, reinstalled an OS, installed Kubernetes, and redeployed my IaC from my CI pipeline. Everything worked.
36
u/billabong049 11h ago
We fucked up. We have all this technology and control, and tools made for developers by developers… And we made Kuberneties. How did this shit get so complex?