Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Chapter 8: Why Kubernetes Won

The Competitive Landscape

Kubernetes was not the only container orchestration system:

  • Docker Swarm (2015) offered a simpler, Docker-native orchestration experience.
  • Apache Mesos (2009) with Marathon provided a battle-tested, two-level scheduling architecture used at Twitter, Airbnb, and Apple.
  • Nomad (2015) from HashiCorp offered a simpler, more flexible orchestrator that could manage containers, VMs, and standalone binaries.

So why did Kubernetes win? Several factors:

1. The right abstraction level. Docker Swarm was too simple: it lacked the extensibility and abstraction depth needed for complex production workloads. Mesos was too low-level: it provided resource scheduling but left application management to frameworks like Marathon, creating a fragmented experience. Kubernetes hit a sweet spot: it provided a comprehensive API for managing applications (Deployments, Services, ConfigMaps, Secrets) while remaining extensible for new use cases (CRDs, Operators).

2. The declarative model. Kubernetes’ commitment to declarative, reconciliation-based state management was more robust than Swarm’s imperative commands or Mesos’ framework-specific APIs. The declarative model enabled GitOps, automated testing of infrastructure changes, and reliable self-healing.

3. The extensibility model. CRDs and custom controllers allowed the community to extend Kubernetes without forking it. This created a virtuous cycle that Docker Swarm and Mesos, lacking this extensibility, could not match.

4. Vendor neutrality. By donating Kubernetes to the CNCF and designing it to run on any infrastructure, Google ensured that no single vendor controlled the project. This convinced AWS, Azure, and every other cloud provider to offer managed Kubernetes services, creating a universal standard. Docker Swarm was controlled by Docker, Inc., and Mesos was associated with Mesosphere (later D2iQ).

5. Google’s credibility. Kubernetes was backed by Google’s decade of experience running Borg at unprecedented scale. This gave the project instant credibility in a way that a startup’s orchestrator could not match.

6. Community and ecosystem. Kubernetes built the largest open-source community in history (by contributor count). The CNCF ecosystem of complementary projects (Prometheus, Envoy, Helm, ArgoCD, Cilium, etc.) created a complete platform story that no competitor could match.

The Deeper Lesson

But the deeper reason Kubernetes won is architectural. Its design — declarative state, reconciliation loops, extensible API, composable controllers — is not just a set of implementation choices. It is a theory of how to manage distributed systems.

The theory says: define the desired state of the world as data. Build independent controllers that each reconcile one aspect of the world toward the desired state. Communicate only through a shared, versioned state store. Make everything observable and extensible.

This theory is general enough to manage not just containers but anything: virtual machines, databases, DNS records, cloud resources, machine learning models. And that generality is what makes Kubernetes not just an orchestrator but a universal control plane — a platform for managing any infrastructure through declarative, reconciliation-based APIs.

Whether this generality justifies Kubernetes’ complexity is a fair debate. For simple applications, Kubernetes is overkill. But for organizations managing diverse, dynamic, distributed infrastructure at scale, Kubernetes’ architectural principles provide a coherent framework that no other system has matched.

Kubernetes’ ultimate contribution is not the code (which will be replaced someday) but the ideas: declarative state, reconciliation loops, level-triggered controllers, extensible APIs, operator patterns. These ideas will outlive Kubernetes itself and will influence the design of distributed systems for decades to come.

Complexity Is Not Free. Kubernetes’ generality comes at a cost. The system has hundreds of moving parts, a vast ecosystem of add-ons, and a steep learning curve. For many applications — a single service with modest scale, a batch processing pipeline, a static website — Kubernetes is dramatically overengineered. The right question is not “should I use Kubernetes?” but “do I have the problems that Kubernetes was designed to solve?” If you do not have bin-packing, service discovery, rolling deployment, or self-healing problems at meaningful scale, simpler alternatives (Docker Compose, a cloud provider’s native container service, even a well-managed VM fleet) may be more appropriate.

Key Contributors to Kubernetes’ Design

NameRole
Joe BedaCo-founder of Kubernetes at Google. Led early architecture decisions.
Brendan BurnsCo-founder of Kubernetes. Author of key design patterns papers. Corporate VP at Microsoft Azure.
Craig McLuckieCo-founder of Kubernetes. Founded Heptio (later acquired by VMware). Key advocate for CNCF donation.
Brian GrantPrincipal engineer at Google. Led Kubernetes API design and declarative configuration model.
Tim HockinPrincipal engineer at Google. Key architect of Kubernetes networking and node components.
John WilkesGoogle Fellow. Architect of Borg and Omega. His research directly informed Kubernetes’ design.
Eric TuneGoogle engineer. Co-author of the Borg paper and early Kubernetes contributor.
Clayton ColemanRed Hat architect. Major contributor to Kubernetes API machinery, CRDs, and extensibility.

Common Mistakes and Misconceptions

  • “Kubernetes won because it’s the simplest.” Kubernetes won despite its complexity, not because of simplicity. The decisive factors were API extensibility (CRDs and custom controllers), vendor-neutral governance through the CNCF, and the ecosystem flywheel these created. Simpler alternatives like Docker Swarm lost because they lacked these properties.

  • “Docker Swarm failed because Docker was bad.” Swarm’s user experience was widely praised as simpler and more intuitive than Kubernetes. Swarm lost on ecosystem breadth, not on technical quality or user experience.

  • “There are no alternatives to Kubernetes.” HashiCorp Nomad, AWS ECS, and various platform-as-a-service offerings (Cloud Run, Fly.io, Railway) are valid alternatives for many workloads. Kubernetes is the right choice for complex, multi-service, multi-team environments at scale, but not every application needs what Kubernetes provides.

Further Reading


Next: References and Further Reading