SaaS business single founder here, moved from a mix of GCP's Cloud Run, Cloud SQL, and Compute Engine to DO's managed Postgres and Kubernetes, and it has had the follow effects:
- Much cheaper, reducing bill from >100$/month to ~40$. Important for early stage startups
- More performance, easier scaling. Found that my application was much better suited to run in K8S, but this is definitely specific to my use-case
- Consolidation of resources. Except Postgres/Redis, everything is in my cluster, simplifying management and maintenance
For my business, this was a great move, but as others have said, I wouldn't recommend it to everyone. K8S is a great and powerful tool, but also is very complex.
I’m running something similar and have to admit that the ~70$/month for CloudSQL grinds my gears a little. The pricing for Cloud Run on the other hand is pretty sweet.
Agree. The databases we're my biggest costs on GCP, and DO offers more for less.
Cloud Run, as you said, is pretty great. In my other start-up, we're using Cloud Run and Cloud SQL, and again, Cloud SQL is the biggest cost (~95-99% of the bill)
Did you experience the downtime issues with DigitalOcean managed Kubernetes that the author also experienced? I'm also considering DOKS so would be great to know!
Note: source for this information is from discussions with DO via support and the kubernetes slack. I am not affiliated with DO in any way.
The downtime issues with DOKS are directly related to the resources allocated to the control plane, which is not set up in a HA capacity. The resources assigned are directly related to the size/number of nodes you use. API-heavy applications can very easy knock out the control plane, and in that situation is takes it a (relatively) long time to recover on it's own (I would typically see ~4hr before it became responsive again).
Their support team is able to modify the master resources for a given cluster (to assist with recovery), but the turn-around time on that shouldn't be considered "production ready".
At this point my advice for DOKS would be:
- Are you using very basic, out-of-the-box Kubernetes to host "apps"? You will probably be fine, but be sure to have a back-up.
- Are you planning to use Operators, or anything that heavily interacts with the kube-api? I would recommend not using it, or over-provisioning your cluster (which would very quickly offset the advantage of the "free" managed masters).
I know that they are working on fixing some of these reliability issues and I have hopes that it will be more stable shortly.
At this time I have a "stable" cluster which (unless their support lied to me) had master resources manually increased by their support team after the 3rd incident of it dying. I haven't had an issue since then.
Availability of your applications, and availability of the kubernetes control plane, are not typically correlated. One of the nice things about how Kubernetes orchestrates is that the master is not in the path of requests. Ie, in many situations the Kubernetes master may be unavailable, but your applications will be unaffected and can still serve traffic.
I guess he means the Kubernetes API which is what most of the controllers, and other components talk to.
That was my case too. It was mostly when I installed the prometheus-operator that things would go south, even if the nodes themselves were perfectly healthy and underutilized.
Gotcha, thanks for the info! Do you know if were just doing run of the mill Pod deploys of like wordpress and little MVC apps and stuff with no K8s api calls we should be fine?
I like the autoscaling and the infrastructure as code, and price for DOKS is good.
I wish companies would have better visibility to allow them to approve DO for cloud stuff. Struggled to get the necessary compliance docs under NDA from DO
- Much cheaper, reducing bill from >100$/month to ~40$. Important for early stage startups - More performance, easier scaling. Found that my application was much better suited to run in K8S, but this is definitely specific to my use-case - Consolidation of resources. Except Postgres/Redis, everything is in my cluster, simplifying management and maintenance
For my business, this was a great move, but as others have said, I wouldn't recommend it to everyone. K8S is a great and powerful tool, but also is very complex.