← Stackzilla Blog
Kubernetes: When It Helps and When It Is Overkill
Published May 6, 2026
· 6 min read
· Kubernetes, Docker, DevOps, infrastructure, containers, orchestration, cloud
Kubernetes has become the default infrastructure conversation for backend teams, regardless of whether actual scale warrants it. Understanding what problem it actually solves changes the decision entirely.
Kubernetes has become the default infrastructure conversation for backend teams at every stage of growth. Whether you are running three services or three hundred, the assumption in many organizations is that Kubernetes is where you are heading, or where you should already be. The result is a significant number of engineering teams running complex orchestration infrastructure to serve traffic that a single well-configured server could handle without breaking a sweat.
This is not an argument against Kubernetes. It is a case for understanding what problem it actually solves before committing your team to operating it.
**What Kubernetes Was Built to Solve**
Kubernetes emerged from Google's internal container orchestration experience. The problems it was designed to address are real: how do you schedule and run thousands of containerized workloads across hundreds of machines efficiently? How do you ensure that failed containers are restarted? How do you roll out updates across a fleet without downtime? How do you manage configuration and secrets at scale?
These are genuine problems — for organizations operating at Google's scale, or for organizations with enough services and traffic that manual coordination of deployments becomes unworkable. The declarative configuration model, where you describe the desired state and Kubernetes reconciles toward it, is genuinely useful when you have enough services that imperative scripts become brittle and hard to reason about.
**The Operational Cost Nobody Talks About Enough**
Kubernetes is not managed infrastructure in the way that a managed database is managed. Even with EKS, GKE, or AKS handling the control plane, you are still responsible for a significant surface area: node pool sizing and autoscaling, networking configuration, ingress controller setup and maintenance, TLS certificate management, persistent volume provisioning, pod security policies, namespace organization, resource limits and quotas, and monitoring of the cluster itself alongside monitoring of your applications.
This operational overhead is not a Kubernetes failure — it is a reflection of the flexibility and power the system provides. But it has a cost. Teams frequently underestimate how much engineering time maintaining a Kubernetes cluster takes away from building product. For smaller teams, this cost can consume a disproportionate share of infrastructure capacity.
There is also the cognitive overhead. Kubernetes has a significant learning curve. Concepts like pods, deployments, replica sets, services, ingresses, config maps, secrets, persistent volume claims, and namespaces all need to be understood before you can use the system effectively. For a team without existing Kubernetes expertise, the time investment to reach operational proficiency is measured in weeks, not hours.
**When Kubernetes Is the Right Answer**
Kubernetes earns its operational cost when you have multiple services with meaningfully different scaling characteristics. A web API that needs to scale to handle traffic spikes, a background worker that processes jobs at a steady rate, an ML inference service that needs GPU access, and a scheduled job runner all have different resource requirements. Kubernetes handles this mix well.
It is also the right answer when you have a platform or infrastructure team that can own the cluster. The operational work becomes more tractable when it is not spread across every team in the organization. Organizations large enough to have dedicated platform engineers are often large enough that Kubernetes makes sense.
Long-lived codebases that need to support many teams deploying independently, organizations that need strong isolation between workloads for compliance reasons, and teams building internal developer platforms all represent cases where Kubernetes complexity is justified.
**The Alternatives Worth Taking Seriously**
For applications serving under a few thousand requests per minute, the alternatives deserve serious consideration before defaulting to Kubernetes.
A single well-configured VM or a small fleet behind a load balancer handles a remarkable amount of traffic. Deployment tools like Kamal or Capistrano make deploying to VMs straightforward and repeatable without the overhead of container orchestration. This approach has essentially zero operational overhead compared to Kubernetes.
Platform-as-a-service options have matured significantly. Railway, Render, and Fly.io each cover a large portion of the deployment use case with almost no infrastructure management required. You push code; the platform handles building, deploying, and scaling. For teams whose core business is not infrastructure, these platforms often provide the best ratio of capability to engineering overhead.
For containerized workloads that need more than a simple VM but less than full Kubernetes, AWS ECS and Google Cloud Run cover significant ground. ECS is a capable container orchestration service with far less complexity than Kubernetes. Cloud Run scales to zero and handles most serverless container workloads without any cluster to manage.
**The Progression That Often Makes Sense**
For most teams, the reasonable progression looks something like this: start with a managed platform or simple VMs, add complexity only when the current approach creates problems that the complexity actually solves, and evaluate Kubernetes when you have multiple services with different scaling needs and a team that can afford to own the operational work.
The teams that reach for Kubernetes immediately — before the problems it solves exist — end up spending engineering time on infrastructure that could have been spent on product. The teams that wait until they have outgrown simpler approaches find that Kubernetes, when they do need it, is genuinely useful.
**The Honest Take**
Kubernetes is excellent infrastructure for the problems it solves. The issue is teams adopting it because it is the industry standard conversation, not because their specific situation requires it. Before committing to Kubernetes, it is worth asking honestly: do we have enough services with different scaling characteristics to justify this? Do we have someone who can own the operational work? Do the alternatives actually fall short for our use case? If the answers are yes, Kubernetes is likely the right direction. If the answers are uncertain, starting simpler costs less and teaches you more about what you actually need.
Read the full article on Stackzilla →