Sharing a few points from my experience of moving from a managed database to a Do-It-Yourself setup.
Cloud providers have a very stable database offering in general covering a lot of aspects like scaling, managing reliability, setting up backups, disaster recovery through geo-replication. Setting up configurations here are quite literally just a few button clicks. Monitoring and Alerting are easier and provided out of the box.
You can create a database instance in the region close to your application, and migration is super easy too - again, button clicks.
In addition basic security, basic DoS protection, networking/domain registration, and load balancing.
It's up to you to decide if you need all of the above or a few of them, but regardless - at some point, you are going to have a DBA expert in your team and make all the configurations.
In k8s, it's a little tricky for DB. k8s works best when apps are stateless, you applications can be brought up/down, restarted easily. That's not the case with database. You might have to go with a stateful set, create affinity between the disk and compute, setup monitoring and alert (probably with prometheus). You might want to provide the right compute and memory limits to ensure QoS is high so that in situations where you have a lack of resources, your DB pod would be the last to be killed. In case you provide multiple pods, ensure you have a load balancer(service), that load balancer will need additional resources too.
Very quickly your focus will move out of building applications and go towards database operations.
We finally had to go back to a managed database and it was well worth some added cost.
Regarding the costs, depending on the application, performance expectation, and database size, there are a few options.
You can try the Azure option @Ewan has mentioned or checkout Heroku options which are less expensive too.