Überblick
Ein Kubernetes-Pod ist eine Ansammlung aus einem oder mehreren Linux®-Containern und die kleinste Einheit einer Kubernetes-Anwendung. Pods können aus mehreren eng gekoppelten Containern (fortgeschrittener Use Case) oder aus nur einem einzelnen Container (gängiger Use Case) bestehen. Container werden in Kubernetes-Pods gruppiert, um, wie nachfolgend erläutert, für eine intelligentere Ressourcenverteilung zu sorgen.
Innerhalb des Kubernetes-Systems verwenden Container im gleichen Pod auch dieselben Computing-Ressourcen. Diese wiederum werden dort in Pools oder Clustern zusammengefasst, die ein leistungsstärkeres und intelligenter verteiltes System für die Ausführung von Anwendungen ermöglichen. Es kann zu Beginn schwierig sein, alle Bestandteile von Kubernetes – von Containern über Pods und Nodes bis hin zu Clustern– zu verstehen. Folgende Elemente stellen die Vorteile von Kubernetes-Pods am besten dar:
Hardware-Einheiten
Node: die kleinste Einheit der Computing-Hardware in Kubernetes, die man sich einfach als eine individuelle Maschine vorstellen kann.
Cluster: eine Ansammlung von Nodes, die gruppiert werden, um eine intelligente Ressourcenverteilung zu gewährleisten.
Software-Einheiten
Linux-Container: ein Set aus einem oder mehreren Prozessen, inklusive aller zur Ausführung notwendigen Dateien, die zwischen Rechnern verschoben werden können.
Kubernetes-Pod: eine Ansammlung aus einem oder mehreren Linux-Containern, die in Paketen vorliegen, um alle Vorteile der gemeinsamen Ressourcennutzung via Cluster-Management zu nutzen.
Man kann sagen, dass einzelne Hardware in Kubernetes als Nodes dargestellt wird. Viele dieser Nodes sind in Clustern gruppiert und ermöglichen so eine flexible Verteilung von Rechenleistung je nach Bedarf. Auf diesen Clustern wiederum werden Pods ausgeführt, mit denen sichergestellt wird, dass die in ihnen enthaltenen eng gepackten Container zusammen auf dem gleichen Cluster ausgeführt werden können.
Wettbewerbsvorteile durch eine geeignete Container-Strategie
Warum werden Pods in Kubernetes verwendet?
Die Beziehung zwischen Pods und Clustern ist der Grund, warum Container in Kubernetes nicht direkt ausgeführt werden. Mithilfe von Pods wird sichergestellt, dass jeder enthaltene Container dieselben Ressourcen und dasselbe Netzwerk verwendet. Diese Art der Container-Gruppierung ermöglicht ihre Kommunikation untereinander, als würden sie dieselbe physische Hardware verwenden, während sie bis zu einem gewissen Grad doch voneinander isoliert bleiben.
Die Organisation von Containern in Pods ist die Grundlage für eine der bekanntesten Funktionen von Kubernetes: die Replikation. Denn dadurch kann Kubernetes Replikations-Controller verwenden und Anwendungen flexibel horizontal skalieren. Wenn also ein einzelner Pod überlastet ist, kann Kubernetes diesen automatisch replizieren und im Cluster bereitstellen. Kubernetes-Pods unterstützen ein einwandfreies Funktionieren zu Spitzenzeiten. Häufig werden sie außerdem kontinuierlich repliziert und bieten so Schutz vor Systemausfällen.
Was sind Kubernetes-Patterns?
Die Nutzung wiederverwendbarer Elemente – wie von Pods – ist einer der Hauptvorteile des Kubernetes-Systems. Es kann viele Jahre dauern, die besten Einsatzmöglichkeiten von Kubernetes in Produktionsumgebungen herauszufinden. Das sind Jahre, die die meisten Organisationen im Zeitalter der schnellen Bereitstellung cloudnativer Anwendungen einfach nicht haben.
Allerdings basiert Kubernetes auf offenen Standards, und so haben sich in den Versuchsphasen der sogenannten „Early Adopters" Patterns oder Muster für Erfolg (und Misserfolg) herauskristallisiert. Dieser Patterns bieten replizierbare Designs, die viele Organisationen bei einer frühzeitigen Einführung von neuen Technologien unterstützt.
Das von den Autoren Bilgin Ibryam und Roland Huß veröffentlichte und über O’Reilly bereitgestellte Werk Kubernetes patterns: Reusable elements for designing cloud-native applications liefert eine detaillierte Präsentation gängiger wiederverwendbarer Elemente, Patterns, Prinzipien und Praktiken für das Design und die Implementierung cloudnativer Anwendungen auf Kubernetes.