I think higher levels of outsourced management and abstraction are great, until you reach a certain level of application complexity where you really need to bring that control and expertise back in-house. Not to mention that those higher levels of management usually come with increasing cloud provider costs, which are often hidden so as to make the more managed service appear "cheaper."
In the specific case of Kubernetes, my personal preference would be to avoid it for as long as possible. Then, when you actually need that level of complexity, use a managed offering, but always with an eye toward being able to leave the managed service whenever possible.