DigitalOcean Kubernetes (DOKS) does not charge for the control plane, which is a genuine saving of about $73 a month against EKS and GKE. But the control plane was never the expensive part. The bill is nodes, and then the load balancer you need to get traffic in, and then the block storage your persistent volumes claim, and then the egress. A realistic small production cluster lands around $60-90 a month - not the $12 the pricing page leads with, and still meaningfully cheaper than the equivalent on a hyperscaler.
Table of contents
- The line items, in the order they surprise people
- What a real cluster actually costs
- The free control plane is a real advantage, with an asterisk
- Where the DOKS bill actually goes wrong
- Is managed Kubernetes even the right call
- How this fits the rest of the stack
- FAQ
The line items, in the order they surprise people
DOKS pricing is the sum of four things, and only the first one is advertised.
Worker nodes. These are just Droplets. The smallest usable node is $12/month (1 vCPU, 2GB), but 2GB is tight once the Kubernetes system pods take their cut - you realistically have around 1.2GB for your workloads. The $24/month node (2 vCPU, 4GB) is the honest starting point for anything real.
Load balancer: $12/month. This is the one people forget entirely. A Service of type LoadBalancer provisions a real DigitalOcean load balancer and bills for it. One ingress controller means one load balancer, and that is $12/month before it passes a single request.
Block storage: $0.10/GB/month. Every PersistentVolumeClaim becomes a DigitalOcean volume. A 20GB volume for Postgres is $2/month. Volumes are billed on provisioned size, not used size, and they are not deleted when the cluster is - orphaned volumes from deleted clusters are a well-known way to keep paying for nothing.
Egress. Each node comes with a transfer allowance (1TB on most sizes) pooled across the account. Overage is $0.01/GB. For most workloads this is free in practice, which is a real advantage over the hyperscalers at $0.09/GB.
Control plane: $0. Free on the standard tier. There is a paid high-availability control plane at $40/month, which you should buy for anything genuinely production-critical.
What a real cluster actually costs
Three honest configurations.
A small production app - two nodes, one ingress, one database volume:
2 x $24 node (2 vCPU, 4GB) $48
1 x load balancer $12
30GB block storage $3
-----
$63/month
The same thing with an HA control plane - which you want if downtime costs you anything:
2 x $24 node $48
HA control plane $40
1 x load balancer $12
30GB block storage $3
-----
$103/month
Note what just happened: the HA control plane costs more than half of everything else combined, and now the free-control-plane advantage over EKS has largely evaporated.
A dev cluster you turn off at night: two $12 nodes and no load balancer (use port-forward), which is $24/month, or roughly $8 if you actually destroy it outside working hours.
The comparison that matters: the same small production cluster on EKS costs about $73 for the control plane, plus roughly $60 for two comparable nodes, plus about $16 for an ALB, plus EBS - call it $155/month for the same shape. DOKS is meaningfully cheaper, but by a factor of roughly two, not the factor of six the free control plane implies.
The free control plane is a real advantage, with an asterisk
EKS charges $0.10/hour per cluster - about $73/month - before a single node. GKE charges the same beyond its one free zonal cluster. DOKS charges nothing.
This matters enormously in one specific case: when you run many clusters. Separate clusters for dev, staging, and production is a common and sensible pattern. On EKS that structure costs $219/month in control-plane fees alone, before any compute. On DOKS it costs nothing. For a small team, that is the difference between proper environment isolation and everyone sharing a namespace in one cluster and pretending it is fine.
The asterisk: the free control plane is not highly available. It is a single control plane, and DigitalOcean does not promise the same SLA as the paid tier. If it goes down, your running workloads keep serving traffic - the data plane is independent - but you cannot deploy, scale, or self-heal until it returns. For a lot of teams that is an acceptable risk for a dev cluster and an unacceptable one for production, which is exactly why the $40 HA tier exists.
Where the DOKS bill actually goes wrong
Three failure modes account for most of the surprise invoices.
A load balancer per service. Every Service of type LoadBalancer provisions its own $12/month load balancer. A team that exposes five services this way is paying $60/month for load balancing. The fix is an ingress controller - one load balancer, routing to many services by hostname or path. This is the single most common DOKS billing mistake and it is entirely avoidable.
Orphaned volumes. Delete a cluster and its block-storage volumes survive it. They keep billing. Check the Volumes page in the control panel after any cluster teardown; there is very often something there that nobody remembers creating.
Oversized nodes for undersized pods. Kubernetes schedules on requests, not on actual usage. Pods that request 1GB but use 100MB will fill a node’s schedulable capacity while leaving it 90% idle, and you will add a node you did not need. Set requests to something close to reality, and check kubectl top nodes against what the scheduler thinks it has allocated. The gap between the two is money.
Is managed Kubernetes even the right call
The uncomfortable question, and worth asking before you spend $63 a month.
A two-node DOKS cluster with an ingress controller, cert-manager, and a Postgres operator is a real amount of machinery to run a web app, a database, and a worker. The same three things fit on a $24 Droplet with Docker Compose, or on a managed platform that just runs containers, and neither of those requires you to understand pod eviction, taints, or why the ingress is returning 502.
Kubernetes earns its complexity when you have many services, several teams that need to deploy independently, real autoscaling requirements, or an existing investment in the ecosystem. It does not earn it for one app and three containers - and the fact that the control plane is free does not change that, because the control plane was never the cost. The cost is the operational surface area.
If you are on DOKS because it was the cheapest managed Kubernetes, that is a fine reason to have chosen DOKS. It is not a reason to have chosen Kubernetes.
How this fits the rest of the stack
Whatever you decide here, the cost of the decision only shows up as a bill. The RunxBuild hosting calculator is the right place to model that before committing: the compute, the database, the storage, the bandwidth, the worker - each one is a separate line item, and the real cost of a platform is the sum, not the headline number. The RunxBuild dashboard is where the team sees the actual usage once it is running.
Useful related references:
- Fly.io Pricing in 2026: The Five Plans, the Hidden Costs, and the Workload That Actually Beats the Free Tier
- Docker Pricing: Personal, Pro, Team, Business (and the Free Tier)
- Kubernetes Python: The Client Library, the Resources, the Custom Resources, and the Right Way to Use Python with k8s
- Services on RunxBuild
FAQ
Is DigitalOcean Kubernetes really free?
The control plane is free on the standard tier, but nothing else is. You pay for worker nodes (from $12/month), any load balancer ($12/month each), block storage for persistent volumes ($0.10/GB/month), and egress above the included transfer. A small production cluster realistically costs $60-90 a month.
How much cheaper is DOKS than EKS?
Roughly half for a comparable small cluster. EKS charges about $73/month per cluster for the control plane; DOKS charges nothing. A two-node production setup lands near $63/month on DOKS versus about $155 on EKS. The gap is real but smaller than the free control plane suggests, because nodes dominate the bill.
Do I need the HA control plane?
For production, probably. The free control plane is a single instance - if it fails, running pods keep serving traffic but you cannot deploy, scale, or self-heal until it recovers. The HA tier is $40/month, which is more than half the cost of a small cluster, so it is a real decision rather than an obvious upsell.
Why is my DOKS bill higher than expected?
Usually a load balancer per service. Each Service of type LoadBalancer provisions its own $12/month load balancer, so five exposed services cost $60/month in load balancing. Use a single ingress controller instead. The other common cause is orphaned block-storage volumes left behind by a deleted cluster.
What is the cheapest usable DOKS setup?
Two $12 nodes with no load balancer, using port-forward for access, is about $24/month for a dev cluster. For anything serving real traffic you need a load balancer and larger nodes, which puts the floor near $60/month.