Was ist eigentlich Kubernetes?
In unserer neuen Reihe Basiswissen (nach der erfolgreichen Glasfaser-Basiswissen-Reihe) geht es nun um das DevOps-Thema Nummer 1: Kubernetes!
Kubernetes wurde von Google entwickelt und als als Open Source Software der Community bereits 2015 zur Verfügung gestellt. Das Wort ist griechisch und bedeutet Steuermann. Es ist grob gesagt eine Management Umgebung für sogenannte Container, beinhaltet diverse Tools, um diese Container sicher und komfortabel in Multicloud-Umgebungen verwalten zu können. Es handelt sich bei Kubernetes (gerne auch K8s abgekürzt) also um Anwendungen zur generellen automatisierten Bereitstellung, Verwaltung und Skalierung von Containern.
Container? Warum wird so ein Wirbel um Container gemacht?
In der IT sind Container, wie aus der Schifffahrt bekannt, Vehicle, die für die stabile Bereitstellung von Anwendungen (Apps) benutzt werden. In einem Container sind die Applikation mit allen Abhängigkeiten gepackt und macht diese somit unabhängig vom zugrundeliegenden Betriebssystem. Ähnlich wie man es in der Schifffahrt kennt, dort dienen Container zum besseren Transportieren von Waren, sie sind stapelbar, sind stabil und man kann verschiedenste Waren transportieren. Im Hafen angekommen, ist ein Containerschiff in Stunden entladen, was früher mal Tage gedauert hat. Kurz gesagt, Container haben den Welthandel auf den Kopf gestellt, jetzt leitet er seinen Siegeszug in ähnlicher Manier in der IT ein, so wie die Container früher den Transportbereich revolutioniert haben.
Was ist ein Container und was enthält dieser?
Ein Container enthält eine Application oder einen (Micro-)Service, der mit allen Abhängigkeiten gebaut wird und damit überall lauffähig ist. Dies bedeutet, dass ein (oder mehrere) Container innerhalb einer virtuellen Instanz (VM) oder nativ auf Hardware betrieben werden kann. Es wird lediglich ein Betriebssystem und dessen Kernel vorausgesetzt, hierbei spielt es keine Rolle ob Linux, Unix, Windows oder sogar ein Mainframe (zOS) verwendet wird. In Analogie zum Hafen kann ein Container auch in unterschiedlicher Art und Weise betrieben bzw. fortbewegt werden. Hierbei spielt es für den Container keine Rolle ob er einzeln auf einem LKW über Straße, auf einen Wagon über Schiene oder auf einem Containerschiff über die Ozeane transportiert wird.
Warum sollte ich mich mit Containern beschäftigen?
Viele Administratoren werden jetzt sagen, ich habe doch virtuelle Maschinen, warum sollte ich mich Containern beschäftigen? Der große Unterschied zwischen Containern und VMs ist die Unveränderlichkeit (Immutabilität). Dies ist der Schlüssel zum Erfolg von Containern in großen Systemumgebungen. Eine VM muss im Laufe der Zeit oft Patches und Updates erhalten und während dieser Zeit auch mehrfach konfiguriert werden, um Anforderungen oder Abhängigkeiten zu erfüllen. Nach einiger Zeit kann nicht mehr nachvollzogen werden, wann welche Handlung zu einem Fehler oder zu einem inkonsistenten Zustand führte. Wer sich allerdings mit Containern beschäftigt, wird feststellen, dass es einem Paradigmenwechsel gleichkommt, denn die Umgebung von morgen wird nicht mehr mit den klassischen Tools administriert und überwacht, sondern programmiert. Hier spielen Container ihr volles Potenzial aus, denn beim Ausrollen eines neuen Containers wird die Lauffähigkeit geprüft und ggfs. ein Roll-Back gemacht, wenn diese nicht erfüllt ist. Dies sorgt für verlässliche Stabilität in der produktiven Umgebung.
Was sind Pods?
Pods sind im Kubernetes Gruppen von Containern. Diese Gruppen nutzen die gleichen zugrundeliegenden Speicher- und Netzwerkressourcen und können je nachdem verschiedene Spezifikation für die Ausführung der Container beinhalten. Ein Pod kann auch nur einen Container beinhalten. Innerhalb eines Pods können Container unter Berücksichtigung von Abhängigkeiten weitere Container in einer bestimmten Reihenfolge starten oder Abhängigkeiten untereinander prüfen lassen (z.B. Bibliotheksversionen).
Warum sollte ich Pods verwenden?
Pods sollten verwendet werden, wenn folgende Anwendungsfälle vorhanden sind:
- Wenn Systemzustände vor der Ausführung von Containern geprüft werden müssen.
- Wenn mehrere Container in sich eine hohe Abhängigkeit aufweisen.
Grundsätzlich kann man also sagen, sobald Abhängigkeiten vorhanden sind, entweder eines Systemzustandes oder der Container untereinander, empfiehlt sich der Einsatz von Pods.
Funktionsweise von Containern
Container machen den Umgang mit den zugrunde liegenden Ressourcen flexibler einsetzbar und das unter Einhaltung der höchstmöglichen Verfügbarkeit. Ein Container kann auf mehreren physikalischen Hosts ausgeführt werden, hierbei übernimmt Kubernetes automatisch das Handling der Ressourcen. Kubernetes führt keine zwei identischen Container auf der selben physikalischen Maschine aus, so dass automatisch eine Ausfallsicherheit geschaffen wird. Fällt ein Host mit einem Container aus, wird automatisch auf einem anderen Host ein Container hochgefahren, damit der Zustand des geschriebenen Containers nicht abweicht. Wenn Sie sich jetzt fragen: „Kann ich einen Container auch löschen?“ Dann ist die Antwort ja, aber Kubernetes wird alles dafür tun, dass die Konfiguration des Containers wieder eingehalten wird – dies bedeutet, wenn eine Replik eines Containers von einem Host gelöscht wurde, wird diese automatisch auf dem Server hochgefahren, damit zu jeder Zeit ein konsistenter Zustand vorhanden ist. Hierbei können Sie auch erahnen, warum es wichtig ist, dass Container „unveränderbar“ sind und entsprechende Änderungen innerhalb den Containers zu finden sind.
Kubernetes buchen
Bei NMMN können Sie eine dedizierte gemanagte Kubernetes Umgebung DSGVO-konform in unseren Rechenzentrumsstandorten buchen. Wir erstellen individuell mit Ihnen in der Projektierung die Anforderungen für eine solche Umgebung und unterstützen Sie als Full-Service-Provider bei der Implementierung und der Anbindung an die Firmen-Infrastruktur und das Internet. Informieren Sie sich hier über die verschiedenen Möglichkeiten, wie NMMN Sie unterstützt.
Mehr Basiswissen
Weiter geht es demnächst in einem weiteren Blog mit dem Titel:
Kubernetes Basiswissen Teil 2: „Bestandteilen ein Kubernetes Cluster“.
Danke
Wir danken unserem Kollegen Thorsten Alke für die Erstellung dieser Grundlagen Artikel zum Thema Kubernetes!