You have a lot less problems in a single VM: There‘s (hopefully) a clear path on how to install software etc. and it is easy to understand. If your distributed PostgreSQL operator written by someone fails you‘re out of luck and it will be really really hard restoring your system. With non-kubernetes non-automated solutions not written by someone you may have some docs saying „Update the replication address and restart“.
The way to restore to a running system is much easier in old traditional vm approaches.
In K8 paths are clearer: Every bit of component that goes into a deployment is versioned. They deploy the same in every build. Its 100% certain.
The problem with stateful app scaling and HA comes from two things: the need to make files and database multi read-write and high available. Other than that, app scaling is pretty easy in K8 even for stateful apps.
The way to restore to a running system is much easier in old traditional vm approaches.