Yes, serveless ties you in to platform specifics but in their nature the functions you create should be small and easy to reimplement elsewhere.
Kubernetes on the other hand is arguably also a certain lock-in, by virtue of being complicated. No wonder vendors love it, it’s an offering that is hard to do right in-house. And when Kubernetes releases updates only the most seasoned in-house teams will be able to keep up. It creates job security by being a lot to learn and manage. Yes there are good abstractions but when something breaks you’ll need to delve into that complexity below. (Makes me think of ORM abstractions vs SQL.)
Yes, Kubernetes is an awesome vehicle for orchestrating a swarm of containerized services. But when you’re not Netflix or Twitter scale it’s ridiculous to worship this complexity.
Frankly I keep coming back to appreciate Heroku's abstractions and its twelve factor app philosophy https://12factor.net/. Heroku runs on AWS but feels like a different world than AWS to develop on. I can actually get projects flying with a 2-3 person team me included.
Actually 'serverless' is where small shops might want to start.
A single Lambda can encompass a whole variety of functions, and if you're using a datastore that scales as well, you don't need to worry about much. Once it's set up, it should be very easy to monitor and change.
I'd rather a simple Lambda than managing a couple of EC2's with failover scenarios and the front end networking pieces for that.
At some point, it becomes cost effective to have a two-pizza team of engineers dedicated to it. Once an org hits that level, then the scale that can be achieved with Kubernetes is pretty immense.