Wie man Multi-Container-Pods in Kubernetes erstellt

Pods haben in der Regel einen einzigen Container, d.h. Pods mit einem Container sind der häufigste Anwendungsfall und es ist nicht notwendig, einen einzigen Container im Pod zu haben. Es gibt einige Anwendungsfälle, in denen ein einzelner Pod mehrere Container enthalten kann. Die Multi-Container-Pods sind die Pods, die zwei oder mehr zusammenhängende Container enthalten, die sich Ressourcen wie Netzwerkraum, gemeinsame Volumina usw. teilen und als eine Einheit zusammenarbeiten.

Einer der Gründe für die Verwendung eines Multi-Container-Pods ist die einfachere Kommunikation zwischen den Containern. Alle Container innerhalb des Pods teilen sich den gleichen Netzwerkraum, um über den Localhost zu kommunizieren. Ein weiterer Grund für die Verwendung eines Multi-Container-Pods ist, dass alle Container denselben Lebenszyklus haben, der auf demselben Knoten laufen sollte. Wenn es notwendig ist, alle Container auf dem gleichen Volume laufen zu lassen, damit sie durch Lesen und Ändern von Dateien im Speichervolumen miteinander kommunizieren können, können mehrere Container-Pods verwendet werden.

In diesem Artikel werden wir einen Pod mit 2 Containern darin erstellen. Dieses Beispiel soll helfen, die Erstellung eines Pods mit mehreren Containern zu verstehen.

Vorraussetzungen

  1. Kubernetes Cluster mit mindestens 1 Worker-Knoten.
    Wenn Sie lernen möchten, wie man einen Kubernetes-Cluster erstellt, klicken Sie hier. Dieser Leitfaden hilft Ihnen bei der Erstellung eines Kubernetes-Clusters mit 1 Master- und 2 Worker-Knoten auf AWS Ubuntu 18.04 EC2-Instanzen.

Was werden wir tun?

  1. Einen Pod mit mehreren Containern erstellen

Erstellen eines Multi-Container-Pods

Erstellen Sie eine Multi-Container-Port-Definitionsdatei mit dem folgenden Inhalt.

vim multi-container-pod-example.yml
apiVersion: v1
kind: Pod
metadata:
  name: multi-container-pod
spec:
  containers:
  - name: container-1
    image: nginx
    ports:
    - containerPort: 80  
  - name: container-2
    image: alpine
    command: ["watch", "wget", "-qO-", "localhost"]

Multi-Container-Pod-Definition

Diese Datei enthält eine Definition für 2 Container, die sich dasselbe Netzwerk, dieselben Ressourcen und dasselbe Volumen teilen.

Besorgen Sie sich eine Liste der vorhandenen Ports und erstellen Sie einen Multi-Container-Port mit den folgenden Befehlen.

kubectl get pods #Get a list of existing pods
kubectl create -f multi-container-pod-example.yml #Create a multi container pod
kubectl get pods #Check the pods after creating in the above step

Multi-Container-Pod erstellen

Im obigen Screenshot sehen Sie, dass es 2/2 Pods mit dem Zustand READY gibt. Das bedeutet, es gibt 2 Pods, und von diesen 2 Pods laufen 2 Pods.

Holen Sie sich eine Liste von Pods und beschreiben Sie den soeben erstellten.

kubectl get pods
kubectl describe pod multi-container-pod #Get details of the Pod.

beschreibe-pod-to-see-detail

Wenn Sie den Pod beschreiben, erhalten Sie Details zu den beiden Containern, die sich in ihm befinden.

Auf dem obigen Screenshot sehen Sie, dass es zwei Container gibt, Container-1 und Container-2. Diese beiden Container gehören zum selben Pod.

Um nun die Protokolle eines bestimmten Containers zu überprüfen, können Sie den Containernamen an den Befehl anhängen, den wir verwenden, um die Protokolle des Pods zu erhalten.

kubectl get pods
kubectl logs multi-container-pod #This does not work
kubectl logs multi-container-pod container-1 #Specify the container name to get the logs

check-logs-of-the-container-inside-the-pod

Im obigen Screenshot sehen Sie, dass Sie einen Fehler erhalten, wenn der Containername nicht an den Befehl übergeben wird, in dem Sie aufgefordert werden, den Containernamen im Befehl anzugeben.

Sie können den Namen eines einzelnen Containers angeben, und nicht mehrere Container können im Befehl zum Abrufen der Protokolle angegeben werden.

kubectl get pods
kubectl logs multi-container-pod #
kubectl logs multi-container-pod container-1 container-2 #Two containers can not be specified

check-logs-of-one-container-at-a-time

Im obigen Screenshot können Sie sehen, dass der Befehl fehlschlägt, wenn Sie 2 Container angeben, um die Protokolle zu erhalten.

Der einfache Befehl zum Einloggen in den Pod funktioniert nicht, wenn sich mehrere Container in einem einzigen Pod befinden.

kubectl get pods
kubectl exec -it multi-container-pod /bin/bash

versuchen, sich in den Pod einzuloggen

Um sich bei einem bestimmten Container anzumelden, müssen wir den Containernamen im Befehl angeben. Sie können sich auch nicht in 2 Pods gleichzeitig einloggen.

kubectl get pods
kubectl exec -it multi-container-pod -c container-1 /bin/bash #Login into the container

Einloggen in den Container-Inside-the-pod

Wenn Sie sie nicht mehr benötigen, können Sie sie mit dem folgenden Befehl löschen.

kubectl get pod
kubectl delete pod multi-container-pod #Delete the pod

delete-the-pod

Schlussfolgerung

In diesem Artikel haben wir gelernt, wie ein Multi-Container-Pod erstellt werden kann. Wir haben auch gesehen, wie man die Protokolle eines bestimmten Containers abruft und sich in einen einzelnen Container einloggt. Ein Multi-Container-Pod hilft uns dabei, abhängige Container in demselben Pod zu haben.

Das könnte Dich auch interessieren …