One cluster per solution wastes what Kubernetes gives you
Kubernetes earns its keep for two reasons. First, it strips away the overhead of running a separate operating system for every application — workloads share the same nodes instead of each carrying its own VM. Second, many applications are stateless by nature: if the deployment is defined as infrastructure as code, there's nothing on disk worth keeping, so the disks, snapshots, and backups a traditional app drags along simply disappear. You can recreate the whole thing from code at any time.
The savings come from sharing
The biggest win, though, is resource management. A correctly configured cluster packs many workloads onto the same pool of compute and shifts them around as demand changes. So the more solutions you run on a cluster, the better the utilisation — and the cheaper each one becomes to run. Kubernetes is at its best when it's full.
A cluster per solution throws that away
Which is why running one cluster per solution — and another per environment — is, to my eyes, a waste. Every cluster carries its own control plane, its own spare capacity, its own idle headroom. Multiply that across every solution and every environment and you've paid many times over for the exact overhead Kubernetes was meant to remove. The bin-packing that makes it cheap only works when workloads share a cluster.
It's harder to run, not easier
Sprawl hurts operations too. Now there are hundreds of clusters to patch, secure, and keep alive — often with developers holding full control of each one. Without the infrastructure experience to run a cluster properly, it's easy to wreak havoc without even realising it. The saner model is a few shared, correctly configured clusters run by people who do this for a living, with self-service and guardrails for the teams on top. Fewer clusters, better used, safely operated — that's where Kubernetes actually pays off.