Because you press 4 buttons on a cloud console, or write a bit of terraform, and you have a consistent management plane for all of this, one that you can plug into any tool the very large ecosystem.
Then your entire engineering org just deploys things.
Need per-application network security policies? Done.
Per app IAM roles? Done.
Secrets management? Done.
Role based access control? Done.
Isolate services to different pools of machines? Done.
Per-app live-updating configuration files across your entire fleet? Done.
CPU, memory or arbitrary per-app metric based auto scaling? Done.
Want to run all this on cheap spot instances? Done.
Want path based HTTP routing within your cluster? Done.
Want an easy deployment mechanism with versioning and rollbacks? Done.
Want simple and consistent service discovery across all your servers? Done.
Want to get advanced and build custom resources to manage groups of other resources whilst taking advantage of k8s management plane in a consistent manner that just works with all the other tooling? Done.
Want to do all this fairly consistently on any cloud vendor, or even on prem? Done.
Want a large pool of candidates familiar with this stack? Done and done.
All those lead to non trivial savings, so you can actually focus on your product and not building a crappy version of Kubernetes by stringing together docker compose instances.
But yes, if you’ve got a single developer and you’re deploying by ssh-ing into a single machine and running git pull, it’s definitely overkill.