It's laughable to think every small company has infra/DevOps/platform teams.
Also, in general, it's very useful to know the platform your software is going to be deployed to, so that you can design the software with those constraints in mind.
I'm just confused why a small company would allocate ~20% (at least) of their engineering hours to maintaining something like this? The 20% number comes from updating containers, checking for security vulnerabilities, rotating secrets, monitoring health, re-deploying after an outage, documenting build processes, creating CI/CD pipelines, writing YAML, etc. etc. I just don't see why you would do that when you could pay a tiny amount of money in comparison for a managed service.
After you have the money for devops, sure, seems great, many benefits. Or if you are just doing it for fun and want to learn, also fine. Or if you have some requirement (health data or something) then great.
But that 20~ has to be the lowest leverage thing possible to spend that time and money on if you are just a regular SaaS, marketplace, <name your startup type> start up. I am genuinely interested how I would get a better return on that rather than fixing bugs, listening to customers, building features, etc.
The only thing I ever hear is "In 5 years you might be locked in and you will regret it." When, in reality, if most startups lasted 5 years, they would be ecstatic...
Same reason you would deploy to plain old servers. Your stuff has got to run somewhere. And (Google hosted) kubernetes solves a lot of issues for you out of the box, which you would otherwise have to solve eventually anyway. And it takes basically no additional maintenance, if you use a mature managed service.
You can have your developers manually copy paste files to a server, which is great while it works, but it's far better to have an automated process. At that point it's not really much more work, in fact I'd argue it's less, to pick docker + kubernetes than any of the alternatives.
Managed Kubernetes (e.g GKE) is a hosted service, just a very flexible one. There is a gap between everything runs on Heroku and Big Enough to have a DevOps team that is pretty large. You tend to outgrow heroku pretty quick if your app has much complexity at all.
Used to work somewhere that just used some VPSes instead of managed hosting. That 20% time was spent on debugging OS issues, disk space issues, OS package updates, downtime needed to increase instance sizing, documenting (read: not actually documenting just leaving it up to the next person) how to rebuild the environment etc etc.
Also, in general, it's very useful to know the platform your software is going to be deployed to, so that you can design the software with those constraints in mind.