What Comes After Kubernetes? (2023)
mattrickard.com
mattrickard.com
This has shades of the "worse is better" Unix+C vs Lisp debate - Unix+C won despite doing things "wrong" because it did them simpler, faster, and more debuggably than Lisp.
Kubernetes is like POSIX. It's a simple product at its core: there's a distributed global state exposed over an API and control loops to update that state. The complexity comes from all the networking and auth and storage rules that people shoehorn in on top.
My only complaint with K8s is that it tries to help with some of that instead of declaring it all to be out of scope and delegating it to plugins, because that's how we got the "K8S is too complicated!!!!" discourse.
> Kubernetes is like POSIX. It's a simple product at its core: there's a distributed global state exposed over an API and control loops to update that state. The complexity comes from all the networking and auth and storage rules that people shoehorn in on top.
We will probably never shave off all accidental complexity. But there are ways of reducing it, and any additional feature will be a burden. So we must make features, but with care for interaction and evolution and, crucially, deployment (if I don't want to use feature X, do I pay for it?). You're right that Kubernetes and Linux aren't unreasonable. They're not far off the mark, and there's only so much low-hanging fruit of improvement. But with the knowledge I have, at least for Linux, I do not accept the current state of affairs as "good enough". I don't agree it is a "good base", but I will say it is instructive. I appreciate that you see the essential complexity of building a Kubernetes or Linux, or a replacement. I posit that we can do better and keep polishing to get a glimpse of that "simple product at its core".
And no, incremental improvements are not the way if you can see glaring room for improvements. There is enough time in the world, but not enough for people to get reasonable progress. And incrementalism limits the scope of changes. It's highly unfortunate that the programming industry/community are too afraid of https://xkcd.com/927/ to make meaningful progress. A fast-moving industry that gets tangled up in its own speed is, in the end, slow-moving.
jsonnet? It would be nice if kubectl had native support but even without it find jsonnet incredibly useful and we use it extensively.