I don't know if you can say these are not good bases. K8S is wildly successful because it solves the core problem of distributed computing (run this code on these machines) at a level that is high enough to not bog down and low enough for engineers to finagle the hardware.
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.