Reading 15m read

Why Kubernetes? The Container Orchestration Problem

Explore the real-world pain points that Kubernetes solves, understand the cost of DIY orchestration, and learn when Kubernetes is — and isn't — the right choice.

The Evolution of Application Deployment

To understand why Kubernetes exists, trace how application deployment has evolved across three eras.

Era 1: Bare Metal (Pre-2000s)

Applications ran directly on physical servers. Provisioning new capacity took weeks. Servers were chronically underutilized — one application per server was common to avoid dependency conflicts.

Era 2: Virtual Machines (2000s–2010s)

VMs allowed multiple isolated environments on one physical machine, improving utilization. But each VM carried a full OS — gigabytes of overhead, minutes to boot. Deployment pipelines improved but remained slow.

Era 3: Containers (2013–Present)

Docker made containers mainstream in 2013. Containers share the host OS kernel, start in milliseconds, and use megabytes instead of gigabytes. Development and production environments finally matched. Build once, run anywhere became real.

The New Problem: Container Sprawl

Containers solved the packaging problem, but created a new one: managing hundreds or thousands of containers across dozens of machines.

Consider a realistic production scenario. Your e-commerce platform has:

  • 15 microservices (auth, catalog, cart, checkout, notification, etc.)
  • 3 replicas per service for high availability = 45 containers minimum
  • 4 environments (dev, staging, pre-prod, production) = 180 containers
  • Each needs: health checks, resource limits, environment config, secrets, inter-service networking, rolling update strategy

Manually managing this across a fleet is not feasible. You need a system that automates the entire lifecycle.

What You Need From an Orchestrator

A container orchestrator must continuously answer these questions:

Where does this container run? Containers need to land on nodes with available CPU and memory that satisfy any placement constraints. This is the scheduling problem.

What happens when it crashes? Someone — something — needs to detect the failure and restart the container, ideally before any user notices. This is the self-healing problem.

How do other services find it? Container IPs change every time a container restarts or moves. Services need a stable, discoverable address. This is the service discovery problem.

How do we update it without downtime? Users can’t tolerate taking the entire application offline for a deployment. New versions must roll out gradually. This is the rolling update problem.

How do we scale it? Traffic spikes need more replicas. Off-peak hours waste money running at peak capacity. This is the autoscaling problem.

Where does its data live? Stateful services (databases, queues) need persistent storage that survives container restarts and node failures. This is the storage problem.

Kubernetes was specifically designed to solve every one of these.

The Real Cost of DIY Orchestration

Many engineering teams try to build their own orchestration layer using shell scripts, Ansible playbooks, or custom tooling. This path is a trap that’s easy to walk into and painful to exit.

What you’d need to build from scratch:

ProblemWhat You Build
SchedulingA scheduler that knows node capacity and respects constraints
Self-healingA health monitor + restart daemon on every node
Service discoveryA service registry + DNS system
Load balancingA dynamic load balancer that tracks live instances
Rolling updatesA deployment controller with rollback logic
AutoscalingA metrics consumer + scaling controller
Secrets managementAn encrypted secrets store with rotation
StorageA storage provisioner that talks to your cloud/storage backend

You’ll spend months building what Kubernetes already provides — then years maintaining and debugging it, while thousands of engineers around the world continue improving Kubernetes for free.

When NOT to Use Kubernetes

Kubernetes adds real operational complexity. Be honest about your situation:

SituationBetter Alternative
Monolith or 2–3 servicesDocker Compose + a VM or two
Solo developer, early-stage startupFly.io, Railway, Render, Heroku
Batch jobs onlyAWS Batch, Google Cloud Run Jobs
Small team (< 3 engineers)Managed PaaS platforms
Serverless-first workloadAWS Lambda, Google Cloud Functions

The rule of thumb: If you can’t justify a dedicated Platform/DevOps engineer, Kubernetes will slow you down more than it speeds you up — at least until the team grows.

When Kubernetes Makes Sense

Kubernetes earns its complexity when you have:

  • 10+ microservices that need independent scaling and deployment cycles
  • Multiple teams deploying to the same infrastructure independently
  • Complex routing requirements between services (A/B testing, canary, blue-green)
  • Hybrid or multi-cloud deployment needs
  • Strict SLA requirements that demand automated failure recovery
  • Cost sensitivity at scale — Kubernetes bin-packs containers efficiently, dramatically improving utilization compared to one-service-per-VM

Kubernetes vs. the Alternatives

Docker Swarm

Docker’s built-in orchestration tool. Simpler to get started with, but far less feature-rich. Docker Inc. has effectively deprecated Swarm in favor of Kubernetes. The ecosystem and community are minimal.

HashiCorp Nomad

More general-purpose than K8s — can orchestrate containers, VMs, and bare-metal binaries. Simpler architecture and learning curve. Smaller ecosystem. Good choice if you run heterogeneous workloads (not just containers).

AWS ECS / Google Cloud Run

Managed container services from cloud providers. Lower operational overhead than self-managed K8s. Higher vendor lock-in. ECS uses its own API; Cloud Run is serverless containers. Both are valid for teams that want containers without learning Kubernetes.

Managed Kubernetes (EKS, GKE, AKS)

Cloud providers manage the control plane, reducing operational burden significantly. This is how most companies run Kubernetes in production. The tradeoff is cost (managed control planes aren’t free) and some loss of control.

The Bottom Line

Kubernetes won the orchestration war. It’s the lingua franca of cloud-native infrastructure. Even alternative managed services increasingly adopt Kubernetes concepts and APIs. Learning Kubernetes is a career investment that pays dividends across every cloud platform and every company.

Key Takeaways

  • Container orchestration solves the lifecycle management problem for containers at scale
  • Every orchestrator must handle: scheduling, self-healing, service discovery, rolling updates, autoscaling, and storage
  • DIY orchestration is a trap — the maintenance cost is enormous and the problems are already solved
  • Kubernetes is not always the right choice; evaluate scale, team size, and complexity tolerance honestly
  • For teams running 10+ microservices with real reliability requirements, Kubernetes is the industry standard

Next, we’ll look at the architecture of Kubernetes to understand how it actually solves all these problems.

Next Lesson