Mein IBM Anmelden Abonnieren

Die Geschichte von Kubernetes

2. November 2023

Lesedauer: 7 Minuten

Wenn es um moderne IT-Infrastruktur geht, darf die Rolle von Kubernetes – der Open-Source-Plattform für die Container-Orchestrierung, die die Bereitstellung, Verwaltung und Skalierung von containerisierten Softwareanwendungen (Apps) und Diensten automatisiert – nicht unterschätzt werden.

Laut einem Bericht der Cloud Native Computing Foundation (CNCF) (Link befindet sich außerhalb von ibm.com) ist Kubernetes das zweitgrößte Open-Source-Projekt der Welt (nach Linux) und das primäre Container-Orchestrierungstool für 71 % der Fortune-100-Unternehmen. Um zu verstehen, wie Kubernetes den Markt für Cloud Computing und Microservices dominieren konnte, müssen wir dessen Geschichte betrachten.

Die Entwicklung von Kubernetes

Die Geschichte von Kubernetes (altgriechisch für „Pilot” oder „Steuermann”) geht oft auf das Jahr 2013 zurück, als ein Trio von Ingenieuren bei Google – Craig McLuckie, Joe Beda und Brendan Burns – die Idee hatte, ein Open-Source-Container-Management-System zu entwickeln. Diese Technologiepioniere suchten nach Möglichkeiten, das interne Infrastruktur-Know-how von Google in den Bereich des groß angelegten Cloud Computing einzubringen und Google in die Lage zu versetzen, mit Amazon Web Services (AWS) zu konkurrieren – dem damals unangefochtenen Marktführer unter den Cloud-Providern.

Traditionelle IT-Infrastruktur versus virtuelle IT-Infrastruktur

 

Um die Geschichte von Kubernetes – auch oft als „Kube“ oder „K8s“ bezeichnet, ein „Numeronym“ (Link befindet sich außerhalb von ibm.com) – wirklich zu verstehen, müssen wir Container im Kontext der traditionellen IT-Infrastruktur im Vergleich zur virtuellen IT-Infrastruktur betrachten.

In der Vergangenheit haben Unternehmen ihre Apps ausschließlich auf physischen Servern (auch als Bare Metal Server bekannt) ausgeführt. Es gab jedoch keine Möglichkeit, die Systemressourcenbegrenzung für diese Apps aufrechtzuerhalten. Wenn beispielsweise auf einem physischen Server mehrere Anwendungen ausgeführt wurden, konnte es vorkommen, dass eine Anwendung die gesamte Rechenleistung, den gesamten Arbeitsspeicher, den gesamten Speicherplatz oder andere Ressourcen auf diesem Server beanspruchte. Um dies zu verhindern, würden Unternehmen jede Anwendung auf einem anderen physischen Server ausführen. Wenn Apps jedoch auf mehreren Servern ausgeführt werden, entstehen nicht ausgelastete Ressourcen und Probleme mit der Skalierbarkeit. Außerdem nimmt eine große Anzahl physischer Maschinen viel Platz in Anspruch und ist ein kostspieliges Unterfangen.

Virtualisierung

 

Dann kam die Virtualisierung – der Prozess, der die Grundlage für Cloud Computing bildet. Die Virtualisierungtechnologie lässt sich bis in die späten 1960er-Jahre zurückverfolgen, wurde aber erst in den frühen 2000er-Jahren allgemein eingeführt.

Die Virtualisierung basiert auf einer Software, die als Hypervisor bezeichnet wird. Ein Hypervisor ist eine leichtgewichtige Software, die es ermöglicht, mehrere Virtual Machines (VMs) auf der zentralen Recheneinheit (CPU) eines einzelnen physischen Servers auszuführen. Jede Virtual Machine enthält dann ein Gastbetriebssystem (OS) und eine virtuelle Kopie der Hardware, die für die Ausführung des Betriebssystems erforderlich ist, sowie eine Anwendung und die zugehörigen Bibliotheken und Abhängigkeiten. 

Obwohl VMs Hardware-Ressourcen für die Ausführung von Apps effizienter nutzen als physische Server, beanspruchen sie dennoch eine große Menge an Systemressourcen. Dies ist insbesondere dann der Fall, wenn zahlreiche virtuelle Maschinen auf demselben physischen Server ausgeführt werden, wobei jede über ihr eigenes Gastbetriebssystem verfügt.

Container

 

Hier kommt die Container-Technologie ins Spiel. Ein historischer Moment in der Entwicklung von Containern war 1979 die Entwicklung von Chroot (Link befindet sich außerhalb von ibm.com), das Teil des Betriebssystems Unix Version 7 ist. Mit Chroot wurde das Konzept der Prozessisolation eingeführt, indem es den Dateizugriff einer Anwendung auf ein bestimmtes Verzeichnis (das Stammverzeichnis) und dessen Unterverzeichnisse (oder Unterprozesse) beschränkte.

Moderne Container sind ausführbare Softwareeinheiten, in denen der Anwendungscode mit seinen Bibliotheken und Abhängigkeiten verpackt ist. Dadurch können Anwendungen in jeder Umgebung – ob vor Ort oder extern – schnell ausgeführt werden, sei es auf einem Desktop, in einem privaten Rechenzentrum oder in einer Public Cloud.

Anstatt wie VMs die zugrunde liegende Hardware zu virtualisieren, virtualisieren Container das Betriebssystem (normalerweise Linux oder Windows). Das Fehlen des Gastbetriebssystems macht Container leichtgewichtig, schneller und portabler als VMs.

Borg: Der Vorgänger von Kubernetes

Anfang der 2000er Jahre suchte Google nach einer Möglichkeit, die beste Leistung aus seinem Virtual Server herauszuholen, um seine wachsende Infrastruktur zu unterstützen und seine Public Cloud-Plattform bereitzustellen. Dies führte zur Entwicklung von Borg, dem ersten einheitlichen Container-Managementsystem. Das Borg-System wurde zwischen 2003 und 2004 entwickelt und ist nach einer Gruppe von Außerirdischen aus Star Trek benannt – den Borg. Dabei handelt es sich um kybernetische Organismen, die nach dem Schwarmprinzip (kollektives Bewusstsein) funktionieren und als „Das Kollektiv“ bezeichnet werden.

Der Name Borg passte gut zum Google-Projekt. Das groß angelegte Cluster-Management-System von Borg fungiert im Wesentlichen als zentrales Gehirn für die Ausführung von containerisierten Workloads in seinen Rechenzentren. Borg wurde für die Verwendung mit der Google-Suchmaschine entwickelt und zum Aufbau der Google-Dienste verwendet, darunter Gmail, Google Docs, Google Search, Google Maps und YouTube.

Borg ermöglichte es Google, Hunderttausende von Jobs aus vielen verschiedenen Anwendungen auf vielen Rechnern auszuführen. Dadurch konnte Google eine hohe Ressourcennutzung, Fehlertoleranz und Skalierbarkeit für seine umfangreichen Workloads erreichen. Borg wird bei Google auch heute noch als primäres internes Container-Managementsystem des Unternehmens verwendet.

Im Jahr 2013 führte Google Omega ein, sein Container-Managementsystem der zweiten Generation. Omega entwickelte das Borg-Ökosystem weiter und bot eine flexible, skalierbare Planungslösung für große Computercluster. Im Jahr 2013 erschien auch Docker auf der Bildfläche, ein wichtiger Akteur in der Geschichte von Kubernetes.

Docker läutet die Open-Source-Containerisierung ein

Docker wurde 2013 von dotCloud, einem Technologieunternehmen für Platform-as-a-Service (PaaS), als Open-Source-Software-Tool veröffentlicht, mit dem Online-Softwareentwickler containerisierte Anwendungen erstellen, bereitstellen und verwalten können.

Die Docker-Container-Technologie nutzt den Linux-Kernel (die Basiskomponente des Betriebssystems) und Funktionen des Kernels, um Prozesse zu trennen, damit sie unabhängig voneinander ausgeführt werden können. Um jegliche Verwirrung auszuräumen: Der Namensgeber Docker bezieht sich auch auf Docker, Inc. (ehemals dotCloud, Link befindet sich außerhalb von ibm.com), das Produktivitätswerkzeuge auf der Grundlage seiner Open-Source-Containerisierungsplattform und des Docker-Open-Source-Ökosystems und der Docker-Community (Link befindet sich außerhalb von ibm.com) entwickelt.

Durch die Verbreitung einer leichtgewichtigen Container-Laufzeit und die Bereitstellung einer einfachen Möglichkeit, Anwendungen zu verpacken, zu verteilen und auf einem Computer bereitzustellen, lieferte Docker den Gründern von Kubernetes die Grundlage oder Inspiration. Als Docker erschien, waren die Google-Mitarbeiter Craig McLuckie, Joe Beda und Brendan Burns begeistert von der Fähigkeit, individuelle Container zu erstellen und sie auf individuellen Rechnern auszuführen.

Docker hatte neue Maßstäbe für cloudnative Infrastrukturen gesetzt, war jedoch mit Einschränkungen verbunden, da es für die Ausführung auf einem einzelnen Knoten konzipiert war, was eine Automatisierung unmöglich machte. Da Apps beispielsweise für Tausende separater Container erstellt wurden, wurde deren Verwaltung in verschiedenen Umgebungen zu einer schwierigen Aufgabe, bei der jede einzelne Entwicklung manuell verpackt werden musste. Das Google-Team erkannte den Bedarf – und die Chance – für einen Container-Orchestrator, der mehrere Container auf mehreren Rechnern bereitstellen und verwalten kann. So entstand Googles Container-Management-System der dritten Generation – Kubernetes.

Die Geburt von Kubernetes

Viele der Entwickler von Kubernetes hatten an der Entwicklung von Borg gearbeitet und wollten einen Container-Orchestrator erstellen, der alles, was sie durch das Design und die Entwicklung der Systeme Borg und Omega gelernt hatten, in ein weniger komplexes Open-Source-Tool mit einer komfortablen Benutzeroberfläche (UI) einfließen ließ. Als Hommage an die Borg nannten sie es „Project Seven of Nine“, nach einer Figur aus „Star Trek: Voyager“, die eine ehemalige Borg-Drohne ist. Der ursprüngliche Projektname hat sich zwar nicht durchgesetzt, wurde aber durch die sieben Punkte im Logo von Kubernetes (Link befindet sich außerhalb von ibm.com) verewigt.

Innerhalb eines Kubernetes-Clusters

Die Kubernetes-Architektur besteht aus aktiven Clustern, die es Containern ermöglichen, auf mehreren Maschinen und in verschiedenen Umgebungen ausgeführt zu werden. Jeder Cluster besteht in der Regel aus zwei Klassen von Knoten:

  • Worker-Knoten, auf denen die containerisierten Anwendungen ausgeführt werden.
  • Steuerungsebenen-Knoten, die den Cluster steuern.

Die Steuerungsebene fungiert im Grunde als Orchestrator des Kubernetes-Clusters und umfasst mehrere Komponenten: den API-Server (verwaltet alle Interaktionen mit Kubernetes), den Steuerungsmanager (verwaltet alle Steuerungsprozesse), den Cloud-Controller-Manager (die Schnittstelle zur API des Cloud-Providers) usw. Worker-Knoten führen Container mithilfe von Container-Laufzeiten wie Docker aus. Pods, die kleinsten bereitstellbaren Einheiten in einem Cluster, enthalten einen oder mehrere App-Container und teilen Ressourcen wie Speicher- und Netzwerkinformationen.

Kubernetes geht an die Öffentlichkeit

Im Jahr 2014 feierte Kubernetes sein Debüt als Open-Source-Version von Borg, wobei Microsoft, RedHat, IBM und Docker sich als erste Mitglieder der Kubernetes-Community anschlossen. Das Softwaretool enthielt grundlegende Funktionen für die Container-Orchestrierung, darunter die folgenden:

  • Replikation zur Bereitstellung mehrerer Instanzen einer Anwendung
  • Lastausgleich und Serviceerkennung
  • Grundlegende Zustandsprüfung und Reparatur
  • Planung, viele Maschinen zu gruppieren und die Arbeit auf sie zu verteilen

Im Jahr 2015 stellten die Kubernetes-Gründer auf der O'Reilly Open Source Convention (OSCON) (Link befindet sich außerhalb von ibm.com) eine erweiterte und verbesserte Version von Kubernetes vor – Kubernetes 1.0. Bald darauf schlossen sich Entwickler des Red Hat OpenShift-Teams dem Google-Team an und brachten ihre Erfahrung im Bereich Technik und Unternehmen in das Projekt ein.

Die Geschichte von Kubernetes und der Cloud Native Computing Foundation

Zeitgleich mit der Veröffentlichung von Kubernetes 1.0 im Jahr 2015 spendete Google Kubernetes an die Cloud Native Computing Foundation (CNCF) (Link befindet sich außerhalb von ibm.com), die Teil der gemeinnützigen Linux Foundation ist. Die CNCF wurde gemeinsam von zahlreichen Mitgliedern der weltweit führenden IT-Unternehmen gegründet, darunter Docker, Google, Microsoft, IBM und Red Hat. Die Mission (Link befindet sich außerhalb von ibm.com) der CNCF besteht darin, „cloudnatives Computing allgegenwärtig zu machen“.

2016 wurde Kubernetes das erste gehostete Projekt der CNCF, und 2018 war Kubernetes das erste Projekt der CNCF, das seinen Abschluss machte. Die Zahl der aktiv beitragenden Unternehmen stieg schnell auf über 700 Mitglieder an, und Kubernetes wurde schnell zu einem der am schnellsten wachsenden Open-Source-Projekte der Geschichte. Bis 2017 überholte es Konkurrenten wie Docker Swarm und Apache Mesos und wurde zum Branchenstandard für die Container-Orchestrierung.

Kubernetes und cloudnative Anwendungen

Vor dem Cloud-Zeitalter waren Softwareanwendungen an die Hardware-Server gebunden, auf denen sie ausgeführt wurden. Als Kubernetes und Container 2018 zum Verwaltungsstandard für Unternehmen im Bereich Cloud-Verkauf wurden, begann sich das Konzept der cloudnativen Anwendungen durchzusetzen. Dies öffnete das Tor für die Erforschung und Entwicklung cloudbasierter Software.

Kubernetes unterstützt die Entwicklung cloudnativer, auf Microservices basierender Programme und ermöglicht die Containerisierung bestehender Apps, wodurch die App-Entwicklung beschleunigt wird. Kubernetes bietet zudem die Automatisierung und Beobachtbarkeit, die für die effiziente gleichzeitige Verwaltung mehrerer Anwendungen erforderlich ist. Die deklarative, API-gesteuerte Infrastruktur von Kubernetes ermöglicht es cloudnativen Entwicklungsteams, unabhängig zu arbeiten und ihre Produktivität zu steigern.

Die anhaltende Einfluss von Kubernetes

Die Geschichte von Kubernetes und dessen Rolle als portable, erweiterbare Open-Source-Plattform für die Verwaltung von containerisierten Workloads und Microservices geht weiter.

Seit Kubernetes 2016 der CNCF beigetreten ist, ist die Zahl der Mitwirkenden auf 8.012 gestiegen – ein Anstieg von 996 % (Link befindet sich außerhalb von ibm.com). Die wichtigste globale Konferenz der CNCF, die KubeCon + CloudNativeCon (Link befindet sich außerhalb von ibm.com), zieht Tausende von Teilnehmern an und bietet ein jährliches Forum für Entwickler und Benutzer, um Informationen und Erkenntnisse zu Kubernetes und anderen DevOps-Trends auszutauschen.

In den Bereichen Cloud-Transformation und Anwendungsmodernisierung gibt es keine Anzeichen dafür, dass sich die Einführung von Kubernetes verlangsamt. Laut einem Bericht von Gartner („The CTO's Guide to Containers and Kubernetes”) (Link befindet sich außerhalb von ibm.com), werden bis 2027 mehr als 90 % der Unternehmen weltweit containerisierte Anwendungen in der Produktion einsetzen.

IBM und Kubernetes

Bereits 2014 war IBM eines der ersten großen Unternehmen, das sich mit der Open-Source-Community Kubernetes zusammengetan hat, um die Container-Orchestrierung in Unternehmen einzuführen. Heute unterstützt IBM Unternehmen bei der Umsetzung ihrer laufenden Cloud-Projekte durch die Implementierung von Kubernetes-Container-Orchestrierung und anderen cloudbasierten Managementlösungen.

Ganz gleich, ob Ihr Ziel die Entwicklung cloudnativer Anwendungen, die Bereitstellung umfangreicher Apps oder die Verwaltung von Microservices ist – wir können Ihnen dabei helfen, Kubernetes und seine zahlreichen Anwendungsfälle zu nutzen.

Red Hat OpenShift on IBM Cloud bietet Entwicklern eine schnelle und sichere Möglichkeit zur Containerisierung und Bereitstellung von Unternehmensworkloads in Kubernetes-Clustern.

Die IBM Cloud Code Engine, eine vollständig verwaltete serverlose Plattform, ermöglicht es Ihnen, Container, Anwendungscode oder Batch-Jobs auf einer vollständig verwalteten Container-Laufzeit auszuführen.