Do You Need Kubernetes? An Honest Answer
Kubernetes solves real problems extremely well. Most teams adopting it do not yet have those problems, and pay the cost anyway.
Kubernetes is excellent software that solves genuine problems. It is also adopted by a great many teams who do not have those problems yet, and who pay its operational cost daily in exchange for capability they do not use.
The honest question is not whether Kubernetes is good. It is whether your constraints are the ones it addresses.
What it genuinely solves
- Bin-packing many workloads onto shared capacity efficiently.
- Declarative desired state with continuous reconciliation — the cluster works to match your specification.
- Self-healing. Failed containers restart, failed nodes have their workloads rescheduled.
- Rolling deployments and rollback as a built-in primitive.
- Service discovery and load balancing inside the cluster.
- A common platform contract across many teams, so each does not reinvent deployment.
That last point is the one people underrate. Kubernetes is at its most valuable as an organisational tool — a shared contract between many teams — rather than as a technical one.
What it costs
- Conceptual surface. Pods, deployments, services, ingresses, config maps, secrets, RBAC, network policies, persistent volume claims, storage classes, admission controllers. That is a body of knowledge before you deploy anything.
- Operational surface. Cluster upgrades, node pool management, certificate rotation, CNI and CSI plugins, resource quota tuning.
- Debugging complexity. Failures acquire more layers between symptom and cause.
- Cost overhead. Control plane charges on some providers, plus the system components on every node.
- Security surface. RBAC, network policies and pod security standards are real work and are frequently left at permissive defaults.
None of this is an argument against Kubernetes. It is the price, and it is worth naming so the trade is deliberate.
Simpler options that cover most cases
| Need | Simpler option |
|---|---|
| Run a container reliably | Managed container service, or Docker Compose with a process supervisor |
| Zero-downtime deploys | Load balancer plus two instances, rolling replacement |
| Autoscaling | Provider auto-scaling group on instances |
| Service discovery | DNS, or a load balancer per service |
| Secrets | Provider secret manager |
| Scheduled jobs | systemd timers or cron on a dedicated host |
| Fully managed deploys | A PaaS layer such as DigitalOcean App Platform |
A load balancer, two application instances and a managed database cover an enormous range of production workloads, with a fraction of the moving parts. That architecture is described in the web application hosting guide.
Signals that you have outgrown the simpler path
These are specific, and none of them is "it feels more professional":
- Many services, many teams. Kubernetes shines as a shared contract once you have more services than people can hold in their heads.
- Genuinely bursty workloads where bin-packing produces real savings.
- Complex deployment topologies — canaries, per-tenant deployments, many environments.
- You are already building the pieces. If you have written your own scheduler, service discovery and rolling deploy tooling, you are building a worse Kubernetes.
- Your ecosystem assumes it. Some software now ships primarily as Helm charts and operators.
If two or more of those are true, adopting it is probably the right call. If none are, it is likely premature.
Adopting it sensibly
If you do go ahead:
- Use a managed control plane. GKE, EKS, AKS, DOKS, LKE or an equivalent. Self-managing the control plane is a specialist job with no business value. GKE Autopilot goes furthest by removing node management too, which is a large part of why teams already committed to Kubernetes often prefer a Google Cloud account for it.
- Do not run your primary database in it initially. Stateful workloads are where Kubernetes is hardest. Use a managed database and revisit later, if ever.
- Set resource requests and limits from the beginning. Without them, scheduling is guesswork and one workload can starve others.
- Use namespaces and RBAC properly from day one. Retrofitting isolation is painful.
- Apply network policies. Default-allow between all pods is the Kubernetes equivalent of a flat network.
- Define everything in Git. The declarative model is the point; clicking in a dashboard discards it. Infrastructure as code applies here directly.
- Plan upgrades. Kubernetes releases frequently and support windows are short. Upgrading is routine work that has to be scheduled.
Frequently asked questions
Is Kubernetes cheaper than instances? Only when bin-packing many varied workloads onto shared capacity. For a handful of steady services it usually costs more once the control plane and system overhead are counted.
Can I run it on independent providers? Yes. Several offer managed Kubernetes with no control-plane charge. The surrounding ecosystem is thinner than the hyperscalers', but the core works.
What about serverless containers instead? Cloud Run, Container Apps and similar services cover a large share of container workloads with far less overhead. For stateless HTTP services they are frequently the better answer.
When is it clearly wrong? A single application with one or two services, one team, and steady traffic. That is a load balancer and two instances.
Related guides
Workloads 4 min read
GPU and AI Workloads: Matching Hardware to What You Are Actually Doing
Training, fine-tuning and inference are three different workloads with three different hardware profiles. Buying for the wrong one is the expensive mistake.
Comparisons 4 min read
Google Cloud vs Azure: Data Platform Against Enterprise Integration
These two platforms are strong in almost opposite places. That makes the comparison unusually clean — the right answer is often obvious once you name the…
Buying Guide 4 min read
Cloud Credits Explained: What They Cover and What They Do Not
A credit balance is a spending allowance, not a capability. The distinction decides whether an environment is useful or merely well funded.
Questions about a specific configuration?
Send us the workload profile — vCPU, memory, region, open ports — and we will confirm which listings actually support it before you buy.