Kubernetes has become the default answer to "how should we run containers in production?" That default is wrong for most teams. The majority of backend applications can run on simpler infrastructure, and the cost of adopting Kubernetes before you need it is higher than most teams realize.
This isn't an anti-Kubernetes argument. K8s solves real problems at real scale. The question is whether your team has those problems today, or whether you're importing complexity to solve issues you don't have yet. This guide covers the real costs, when K8s makes sense, and alternatives including managed containers and infrastructure-from-code with Encore.
The sticker price of a managed Kubernetes cluster (EKS, GKE, AKS) is misleadingly low. AWS charges $0.10/hour for an EKS control plane. That's $73/month. Sounds reasonable.
The real cost is everything around it:
Add it up: a minimal production Kubernetes setup for a small team costs roughly $11,000/month when you factor in infrastructure, fractional DevOps salary, tooling, and ongoing training. That figure comes from surveying teams running K8s clusters with 3-10 services. It does not decrease as you scale down.
K8s earns its complexity when you check several of these boxes:
If you're a 50-engineer organization running 30 services across three teams, Kubernetes is probably the right call. The investment in platform infrastructure pays for itself in deployment velocity and operational consistency.
Most teams asking "do I need Kubernetes?" fall into a different profile:
These teams almost universally don't need Kubernetes. The operational overhead outweighs the benefits. You spend more time managing the platform than building the product.
A few specific scenarios where K8s is clearly overkill:
Early-stage startups: Your priority is shipping features and finding product-market fit. Weeks spent on cluster configuration are weeks not spent on your product. The infrastructure can be migrated later if you outgrow simpler options.
Small service counts: If you have 2-5 services, you don't need a container orchestrator. Managed services like ECS, Cloud Run, or App Runner handle deployment, scaling, and health checks without the K8s tax.
Solo developers or tiny teams: Kubernetes assumes organizational complexity. RBAC, namespaces, resource quotas, network policies. These features serve multi-team organizations. A three-person team doesn't need them.
Several options sit between "manually SSH into a server" and "run a full Kubernetes cluster":
Managed container services (ECS, Cloud Run, Azure Container Apps) handle scheduling, scaling, and health checks. You define your container and scaling rules. The platform handles the rest. Cost is typically 40-60% less than an equivalent K8s setup.
Platform-as-a-Service (Railway, Render, Fly.io) abstracts even further. Push code, get a running service. Good for prototypes and smaller applications, though you trade control for simplicity.
Infrastructure-from-code takes a different approach. Instead of configuring infrastructure separately from your application, the infrastructure is derived from what your code declares. This eliminates the configuration layer entirely.
Encore is an open-source backend framework for TypeScript and Go that takes the infrastructure-from-code approach. You write standard backend code using Encore's SDK, and the framework understands what infrastructure your application needs.
import { SQLDatabase } from "encore.dev/storage/sqldb";
import { api } from "encore.dev/api";
const db = new SQLDatabase("orders", {
migrations: "./migrations",
});
export const getOrder = api(
{ method: "GET", path: "/orders/:id" },
async ({ id }: { id: string }) => {
return db.queryRow`SELECT * FROM orders WHERE id = ${id}`;
},
);
That code declares a database and an API endpoint. When you deploy with Encore Cloud, it provisions the actual AWS or GCP infrastructure in your own cloud account: RDS or Cloud SQL for the database, compute, networking, load balancing, TLS, and CI/CD. You don't write Kubernetes manifests, Terraform config, or Dockerfiles.
This matters for the teams described above: small teams, early-stage companies, and developers who want production-grade infrastructure without the platform engineering overhead. Encore Cloud costs $49/member/month, which is a fraction of the $11k/month K8s setup, and the infrastructure runs in your own AWS or GCP account with no vendor lock-in.
| Factor | Skip K8s | Consider K8s |
|---|---|---|
| Services | < 10 | 10+ |
| Developers | < 5 | 10+ |
| DevOps headcount | 0 | 1+ dedicated |
| Cloud providers | 1 | 2+ |
| Traffic pattern | Steady | Highly variable |
| Monthly infra budget | < $5k | $10k+ |
If most of your answers fall in the left column, you don't need Kubernetes today. Adopt it when the complexity of your system demands it, not before.