Kubernetes einfach erklärt: Container, Pods und Images

Avatar of Lari Maza
Lari Maza am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Wenn Sie abschweifen, jedes Mal wenn jemand "Kubernetes", "Container" oder "Pods" erwähnt, dann ist dieser Artikel genau das Richtige für Sie. Keine komplexen Diagramme!

Als Front-End-Entwickler müssen Sie keine Infrastruktur von Grund auf konfigurieren können. Wenn Sie jedoch ein grundlegendes Verständnis dafür haben, wie sie funktioniert, können Sie Ihre Anwendungen unabhängiger bereitstellen und zurückrollen und sind auch bei Gesprächen über dieses Thema besser informiert.

Beginnen wir mit der Web-Suche nach Kubernetes.

Kubernetes ist ein Open-Source-System zur Orchestrierung von Containern, das die Bereitstellung, Skalierung und Verwaltung von Computeranwendungen automatisiert.

Wikipedia

OK, aber was *ist* ein Container?

Einfach ausgedrückt ist ein **Container** wie ein virtueller Computer, den Sie remote erstellen, verwenden, zerstören und neu starten können.

Stellen Sie sich nun vor, dieser Computer befindet sich tatsächlich in einer Cloud und läuft neben Tausenden anderer virtueller Computer. Und das alles läuft auf einem echten Computer, der extrem leistungsfähig ist. Ihr Computer ist jetzt ein Container in der Cloud.

An illustrated cloud with five computers, each labeled “Container”.

Aber halt – wie werden Sie diesen virtuellen Computer erstellen und steuern? Wie wird er mit anderen Computern in derselben Cloud kommunizieren? Und wie wird er mit der Welt kommunizieren? Es scheint, als bräuchten Sie eine Möglichkeit, all das zu *orchestriren*. Daher: unser Maestro, **Kubernetes** (oder kurz K8s)!

A cloud with five computers labeled “Container” and a maestro below it labeled “K8s”

Sie haben vielleicht auch schon den Begriff **Pods** gehört. Was sind das und wo passen sie hier hinein? Nun, einfach ausgedrückt sind Pods Gruppen von einem oder mehreren Containern. Sie sind die kleinste bereitstellbare Einheit in K8s, wie ein Atom.

Stellen Sie sich vor, Sie bauen eine WordPress-Website und benötigen einen Computer, auf dem PHP und eine MySQL-Datenbank laufen. Beide im selben Computer zu betreiben, könnte zu schwer sein; daher könnten Sie stattdessen einen Container für PHP und einen für MySQL erstellen, und K8s hilft dabei, dass sie kommunizieren.

Dann würden Sie diese beiden Container in einem Pod gruppieren, der die gesamte Anwendung repräsentiert. Das bedeutet, dass Sie jetzt eine gesamte Anwendung über Pods starten und beenden können.

Cloud with circle inside it labeled “Pod” and two computers inside it each labeled “PHP” and “MySQL”

Sie würden jedoch wahrscheinlich nicht nur einen einzigen Pod erstellen, um eine App in der Produktion bereitzustellen – es gibt noch mehr, das wir jetzt nicht behandeln müssen, aber Sie können mehr über Pods in der K8s-Dokumentation lesen.

Jetzt ist ein guter Zeitpunkt, um zu fragen: Was passiert, wenn Sie eine App in diesem Setup bereitstellen?

K8s erstellt einen neuen Pod, leitet den Traffic dorthin um und wenn es sicher ist, dass alles funktioniert, beendet es den alten Pod. Auch hier sind mehr Entitäten beteiligt, um Anfragen zu steuern und umzuleiten, aber das lassen wir heute weg.

Manchmal bricht die Bereitstellung jedoch etwas und wir müssen unsere Anwendung auf die vorherige Version zurücksetzen. Stellen Sie sich vor, alles brennt und wir müssen all diese Computer von Grund auf neu starten – Linux, Node, Git installieren, das Repository klonen, Abhängigkeiten installieren, die App bauen… das würde ewig dauern! Wenn es doch nur einen schnelleren Weg gäbe, wie das Erstellen eines Schnappschusses aus der Vergangenheit, um alles schnell wiederherzustellen zu...

USB flash drive labeled “June 15 2:45pm”

Hier kommen die **Images** ins Spiel! Wahrscheinlich haben Sie diesen Begriff auch schon oft gehört. Ein Image ist wie ein Backup eines Containers mit allem, was bereits installiert und konfiguriert ist. Ein neues Image wird bei jeder Übertragung in den Hauptzweig Ihres Repositories von Ihrer Continuous Integration (Abk: CI) generiert und dann in neue Container repliziert, wenn diese erstellt werden.

Und wofür sind sie gut? Nun, hauptsächlich für zwei Dinge: Das erste ist die schnelle Wiederherstellung auf das vorherige Image, wie in unserem obigen Beispiel. Aber sie sind auch nützlich, wenn Ihre Website viel Traffic hat und ein einzelner Computer das nicht bewältigen kann.

Wenn Sie ein Image haben, können Sie beliebig viele identische Container erstellen und dieses Image auf all diesen replizieren, um exakt denselben Inhalt bereitzustellen.

Four computers all equally labeled “Commit d406cht”

Alles erledigt! Wir haben gerade die Grundlagen behandelt, wie die Infrastruktur einer Anwendung funktioniert, und jetzt können Sie hoffentlich auf die Werkzeuge extrapolieren, die Ihr Projekt verwendet.


Vielen Dank an Eduardo Shiota, der es mir ermöglicht hat, dies zu erklären!