We couldn't find a match for given <KEYWORD>, please try again.

Was sind Kubernetes-Pods?

Ein Pod stellt die kleinste Ausführungseinheit in Kubernetes dar und kapselt eine oder mehrere Anwendungen. Pods sind von Natur aus kurzlebig. Wenn ein Pod (oder der Knoten, auf dem er ausgeführt wird) ausfällt, kann Kubernetes automatisch ein neues Replikat dieses Pods erstellen und damit den Betrieb fortsetzen. Pods enthalten einen oder mehrere Container (z. B. Docker-Container).

Pods stellen zudem Umgebungsabhängigkeiten bereit, darunter persistente Storage-Volumes (permanenter Storage, der allen Pods im Cluster zur Verfügung steht) und Konfigurationsdaten, die für die Ausführung von Containern im Pod erforderlich sind.

Kubernetes in 5 Minuten

Statusbericht zu Kubernetes 2021

Welche Aufgaben hat ein Pod?

Pods repräsentieren die in einem Cluster ausgeführten Prozesse. Kubernetes beschränkt Pods auf einzelne Prozesse und kann dadurch Berichte über den Zustand jedes Prozesses im Cluster erstellen. Pods umfassen

  • eine eindeutige IP-Adresse (über die sie miteinander kommunizieren können),
  • persistente Storage-Volumes (nach Bedarf),
  • Konfigurationsinformationen, die bestimmen, wie Container ausgeführt werden.

Die meisten Pods enthalten einen Container, viele weisen jedoch auch mehrere Container auf, die eng zusammenarbeiten, um eine gewünschte Funktion auszuführen.

Welche Vorteile bietet ein Pod?

Wenn Pods mehrere Container enthalten, werden Kommunikation und Datenaustausch untereinander vereinfacht. Da alle Container in einem Pod denselben Netzwerk-Namespace nutzen, können sie sich gegenseitig lokalisieren und über „localhost“ kommunizieren. Pods sind in der Lage, miteinander zu kommunizieren, indem sie die IP-Adresse eines anderen Pods verwenden oder auf eine Ressource verweisen, die sich in einem anderen Pod befindet.

Pods können Container umfassen, die beim Start des Pods ausgeführt werden, um beispielsweise die erforderliche Initiierung durchzuführen, bevor die Anwendungs-Container ausgeführt werden. Darüber hinaus vereinfachen Pods die Skalierbarkeit, sodass Replikat-Pods bei Bedarfsänderungen automatisch erstellt und heruntergefahren werden.

Wie funktioniert ein Pod?

Pods werden von Workload-Ressourcen, sogenannten Controllern, erstellt. Diese verwalten Rollout, Replikation und Zustand von Pods im Cluster. Wenn beispielsweise ein Knoten im Cluster ausfällt, erkennen Controller, dass die Pods auf diesem Knoten nicht mehr reagieren, und erstellen Ersatz-Pods auf anderen Knoten.

Zu den drei gängigsten Controller-Typen gehören:

  • Jobs für kurzlebige Batch-Aufgaben, die eine Aufgabe vollständig ausführen
  • Deployments für zustandsfreie, persistente Anwendungen, z. B. Webserver (HTTP-Server)
  • StatefulSets für Anwendungen, die sowohl zustandsbehaftet als auch persistent sind, z. B. Datenbanken

Wenn ein Pod mehrere Container aufweist, werden diese alle zusammen auf demselben Server im Cluster geplant, unabhängig davon, ob es sich um eine VM oder einen physischen Server handelt. Alle Container im Pod verfügen über gemeinsame Ressourcen und Abhängigkeiten und sind in der Lage, ihre Ausführung und Beendigung zu koordinieren. Pods können z. B. „init“-Container enthalten, die vor Anwendungs-Containern ausgeführt werden und die Umgebung für nachfolgende Anwendungen einrichten.

Pods werden fast immer von Controllern erstellt, die dann den Pod-Lebenszyklus automatisch verwalten. Dazu gehört beispielsweise, ausgefallene Pods zu ersetzen, bei Bedarf zu replizieren und sie aus Cluster-Knoten zu entfernen, wenn sie ihren Zweck erfüllt haben oder nicht mehr benötigt werden.

Controller verwenden Informationen in einer Pod-Vorlage, um Pods zu erstellen. Zudem sorgen Controller dafür, dass ausgeführte Pods mit der in der Pod-Vorlage definierten Bereitstellung übereinstimmen, indem sie beispielsweise Replikate gemäß der in der Bereitstellung festgelegten Anzahl erstellen.

Wie kommunizieren Pods miteinander?

Beim Erstellen eines Pods wird ihm eine eindeutige IP-Adresse zugewiesen. Wenn der Pod mehrere Container enthält, können diese über „localhost“ ganz einfach miteinander kommunizieren. Für die Kommunikation außerhalb des Pods wird ein Port bereitgestellt. Der Kommunikation zwischen Pods in einem Cluster kommt die Tatsache zugute, dass Kubernetes jedem Pod im Cluster eine private Cluster-IP-Adresse zuweist. Dadurch müssen Sie keine expliziten Verbindungen zwischen Pods erstellen oder Zuordnungen von Container-Ports zu Host-Ports durchführen. Auf diese Weise können sich Pods in einem Cluster gegenseitig „sehen“, ohne das NAT erforderlich ist.

Was sind die grundlegenden kubectl-Befehle?

Kubectl enthält eine Reihe von Befehlen, mit denen Anwender Pods erstellen, sie mithilfe von Bereitstellungen ausführen, den Status ausgeführter Pods prüfen und nicht mehr benötigte Pods anhalten können. Für die Codierung von Befehlen werden entweder „JavaScript Object Notation“(JSON)- oder „YAML Ain't Markup Language“(YAML)-Befehle verwendet.

Häufig genutzte kubectl-Befehle werden nachstehend aufgeführt:

Get

Mit dem Befehl „kubectl get“ zeigen Sie Tabelleninformationen zu einer oder mehreren Ressourcen an. Informationen werden mithilfe von Bezeichnungsselektoren gefiltert und nur aus dem vorhandenen Namespace oder für alle Namespaces im Cluster angezeigt.
Mit dem Befehl „kubectl api-resources“ erstellen Sie eine Liste aller unterstützten Ressourcen, über die Sie Informationen abrufen können. Das allgemeine Format für den Befehl „kubectl get“ sieht folgendermaßen aus:

$ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]

Pods erstellen

Pods werden über den Befehl „create“ im folgenden Format erstellt:

$ kubectl create -f FILENAME.

Beispielsweise erstellen Sie mit dem Befehl

kubectl create -f ./mypod.yaml einen neuen Pod aus der YAML-Datei „mypod“.

Pods löschen

Mit dem Befehl „kubectl delete -f ./mypod.yaml“ löschen Sie den Pod „mypod“ aus dem Cluster. Das Löschen von Pods ist ein ordnungsgemäßer Prozess. Pods werden über einen Kulanzzeitraum (standardmäßig 30 Sekunden) weiter ausgeführt, bevor sie zwangsweise beendet werden. Der Wert für den Kulanzzeitraum kann bei Bedarf mit der Flag „–grace-period“ überschrieben werden.

Zugehörige Lösungen und Produkte

Enterprisefähige Kubernetes-Laufzeit

Optimieren Sie Abläufe in einer Multi-Cloud-Infrastruktur.

Kubernetes und Docker im Vergleich

Welche Tools führen Sie zum Erfolg mit Containern?

Docker-Container in Kubernetes

Sobald Sie sich mit dem Konzept von Containern und Kubernetes vertraut gemacht haben, sollten Sie sich mit deren Zusammenspiel auseinandersetzen.