Google betrieb Linux-Container bereits ein Jahrzehnt lang im großen Maßstab, bevor Container in Mode kamen. Das Borg-System von Google verwaltete Hunderttausende von Jobs über Cluster mit bis zu Zehntausenden von Maschinen hinweg, wobei es eine deklarative Job-Spezifikationssprache sowie automatischen Neustart und Neuplanung nutzte, wenn eine Instanz ausfiel.

Kubernetes, 2014 als Open Source veröffentlicht, trug die Lehren von Borg über Google hinaus: ein gemeinsamer persistenter Speicher, eine domänenspezifische REST-API mit Versionierung und Validierung sowie eine einheitliche Spec/Status-Struktur für jedes Objekt. Das Designziel bestand darin, komplexe verteilte Systeme einfach bereitzustellen und zu verwalten und zugleich die Auslastungsgewinne zu bewahren, die Container ermöglichen.

Da Controller lediglich den gewünschten Zustand mit dem beobachteten Zustand vergleichen und auf die Differenz reagieren, ist die Plattform von Natur aus selbstheilend und erweiterbar: Ein Autoscaler passt nur die gewünschte Replikatzahl an und berührt nie die Maschinerie, die sie abgleicht. Diese eine Abstraktion wurde zum Standard der Branche.

Gewünschten Zustand deklarieren; eine Schleife gleicht die Realität ab

Deklarative Spezifikationen bedeuten, dass dasselbe YAML auf jedem konformen Cluster funktioniert und die Portabilitätssteuer entfällt

Eine einheitliche Objekt-API ermöglicht es Nutzern, internen Komponenten und Automatisierung gleichermaßen, dasselbe System zu steuern

Die Kontrollschleife macht Rollouts, Zustandsprüfungen und Skalierung zu Funktionen eines einzigen Mechanismus statt zu maßgeschneidertem Code

Die Open-Source-Veröffentlichung unter der CNCF gab jedem Anbieter einen gleichberechtigten Platz, sodass die Cloud-Giganten über den Service und nicht über Lock-in konkurrierten

Biete einen deklarativen Vertrag statt imperativer Skripte an: Nutzer sagen, was sie wollen, die Maschinerie übernimmt das Wie. Dieser Vertrag war es, der Kubernetes zu der Abstraktion machte, die jede Cloud übernehmen konnte.

Kubernetes wurde zum De-facto-Standard für Container-Orchestrierung; jede große Cloud bietet eine verwaltete Version an, und CNCF-Umfragen zählen es zu den am weitesten verbreiteten Plattformen. Borg bleibt Googles internes System, doch sein öffentlicher Nachkomme standardisierte, wie die Branche Software bereitstellt.

DEN BELEGEN FOLGEN

Die Quellen

  1. Large-scale cluster management at Google with Borg (abstract) Google Research / EuroSys 2015 · research.google
  2. Borg, Omega, and Kubernetes ACM Queue · queue.acm.org
  3. Kubernetes Overview Kubernetes Documentation · kubernetes.io