In diesem Tutorial erfahren Sie, wie Sie Kubernetes-Pods erstellen und verwalten. Zuerst beginnen wir damit, was ein Pod in Kubernetes ist und wie ein Pod funktioniert. Als nächstes werfen wir einen kurzen Blick auf die Arten von Pods. Und dann werden wir sehen, wie man einen neuen Pod erstellt und die Informationen des Pods über die Befehlszeile anzeigt. Schließlich lernen wir, wie man den Pod löscht, wenn er nicht mehr benötigt wird.
Was ist ein Pod in Kubernetes?
In Kubernetes , Pods sind die kleinsten bereitstellbaren Recheneinheiten, die Sie bauen und steuern können. Ein Pod ist eine Sammlung von einem oder mehreren Containern mit gemeinsam genutzten Speicher- und Netzwerkressourcen sowie einer Reihe von Regeln für die Ausführung der Container.
Die Inhalte eines Pods befinden sich immer am selben Ort, werden gemeinsam geplant und in derselben Umgebung ausgeführt. Ein Pod stellt einen anwendungsspezifischen "logischen Host" dar:Er enthält einen oder mehrere eng miteinander verbundene Anwendungscontainer.
Aus Docker-Perspektive entspricht ein Pod einer Reihe von Docker-Containern mit gemeinsamen Namespaces und Dateisystem-Volumes.
Arten von Kubernetes-Pods
In einem Kubernetes-Cluster gibt es zwei Arten von Pods.
- Einzelbehälter-POD: Der häufigste Kubernetes-Anwendungsfall ist der „Ein-Container-pro-Pod“-Ansatz; Betrachten Sie in diesem Szenario einen Pod als Wrapper für einen einzelnen Container. Kubernetes verwaltet Pods und keine Container direkt.
- Mehrere Container POD: Ein Pod kann eine Anwendung kapseln, die aus zahlreichen eng verbundenen Containern besteht, die Ressourcen gemeinsam nutzen müssen. Diese Container werden zusammen gruppiert, um eine einzige Diensteinheit zu bilden, und diese Container werden miteinander kommunizieren.
Wie funktioniert POD?
Jeder Pod ist darauf ausgelegt, eine einzelne Anwendungsinstanz auszuführen. Sie können mehrere Pods verwenden, einen für jede Instanz, wenn Sie Ihre Anwendung horizontal erweitern müssen. Dies wird allgemein als Replikation in Kubernetes bezeichnet . Eine Workload-Ressource und ihr Controller produzieren und verwalten normalerweise replizierte Pods in einer Gruppe.
Das ultimative Ziel von Kubernetes ist es, die Anwendung in Form von Containern auf einer Reihe von Maschinen bereitzustellen, die als Worker-Knoten bezeichnet werden im Kubernetes-Cluster.
Kubernetes startet Container nicht direkt im Knoten, sondern die Container sind als Pod gekapselt, der eine einzelne Instanz einer Anwendung ist.

In einem Kubernetes-Cluster besteht ein Knoten aus Pods und ein Pod aus Containern. Beispielsweise haben Sie eine einzelne Instanz einer Anwendung, die in einem einzelnen Container ausgeführt wird, der von einem Pod gekapselt ist.
Wenn die Anzahl der Benutzer zunimmt, die auf die Anwendung zugreifen, müssen Sie Ihre Anwendung vergrößern. In diesem Fall müssen Sie möglicherweise zusätzliche Instanzen hochfahren, um die Last zu teilen.
Zum Hochskalieren der Anwendung müssen Sie einen zusätzlichen neuen Pod im Knoten mit derselben Anwendung hochfahren. Wenn die Last weiter zunimmt und der aktuelle Knoten keine Kapazität mehr hat, benötigen Sie einen zusätzlichen Knoten, um Pods mit demselben Anwendungscontainer hochzufahren.
Ebenso müssen Sie zum Herunterskalieren den vorhandenen Pod löschen.
Ich hoffe, Sie haben die Grundidee zu Kubernetes Pods verstanden. Sehen wir uns nun an, wie Pods in Kubernetes erstellt und verwaltet werden.
Bevor Sie beginnen, stellen Sie sicher, dass Sie Kubernetes auf Ihrem System installiert haben. Die folgenden Links enthalten Anweisungen zum Einrichten einer Kubernetes-Cluster-Bereitstellung mit einem oder mehreren Knoten unter Linux.
- So installieren Sie Kubernetes mit Minikube in CentOS Linux
- Kubernetes-Cluster mit Kubeadm in RHEL, CentOS, AlmaLinux, Rocky Linux installieren
Sobald Kubernetes installiert ist, können Sie mit der Erstellung von Pods beginnen.
Normalerweise müssen Sie Pods nicht direkt erstellen, nicht einmal Singleton-Pods. Erstellen Sie sie stattdessen mithilfe von Workload-Ressourcen wie Bereitstellung oder Job . Eine Bereitstellung stellt deklarative Aktualisierungen für Pods und ReplicaSets bereit.
Eine Bereitstellung erstellen
Erstellen Sie eine Beispielbereitstellung mit einem vorhandenen Image "echoserver" . Es ist ein einfacher HTTP-Server und wir können ihn auf Port 8080
verfügbar machen mit --port
Option.
Ein Container-Image ist eine Datei, die ein Programm und alle seine Softwareabhängigkeiten in Binärdaten verpackt. Container-Images sind unabhängige ausführbare Softwarepakete, die äußerst spezifische Annahmen über ihre Ausführungsumgebung treffen.
In diesem Artikel werden wir alle Demonstrationen in einem Single-Node-Cluster durchgehen .
Sie können die Knotendetails erfahren, indem Sie den folgenden Befehl als root
ausführen Benutzer
# kubectl get nodes
Beispielausgabe:
NAME STATUS ROLES AGE VERSION ostechnix Ready Master 25h v1.22.3

Stellen Sie jetzt eine Beispielanwendung namens "hello-ostechnix" bereit mit dem folgenden Befehl. Sie können es nach Belieben benennen.
# kubectl create deployment hello-ostechnix --image=k8s.gcr.io/echoserver:1.10
Beispielausgabe:
deployment.apps/hello-ostechnix created [[email protected] ~]#
Das Deployment wurde erstellt, überprüfen Sie das Deployment mit dem folgenden Befehl.
# kubectl get deployments
Beispielausgabe:
NAME READY UP-TO-DATE AVAILABLE AGE hello-ostechnix 1/1 1 1 85s
Auf Bereitstellung zugreifen
Um auf diese Bereitstellung als Dienst zuzugreifen, müssen Sie sie als Dienst verfügbar machen. Verwenden Sie den folgenden Befehl, um die Bereitstellung auf dem Port 8080
verfügbar zu machen .
# kubectl expose deployment hello-ostechnix --type=NodePort --port=8080
Beispielausgabe:
service/hello-ostechnix exposed
Verwenden Sie den folgenden Befehl, um die URL des angezeigten Dienstes abzurufen.
# minikube service hello-ostechnix --url
Beispielausgabe:
http://192.168.181.131:30525

Kopieren Sie die URL und fügen Sie sie in Ihren Browser ein, um die Details der bereitgestellten Anwendung aufzulisten.

Stellen Sie sicher, dass der Port 30525
ist in Ihrem Router oder Ihrer Firewall erlaubt ist. Wenn dieser Port blockiert ist, können Sie die Informationen des Pods möglicherweise nicht im Browser anzeigen.
Bereitstellung löschen
Löschen Sie zuerst den Dienst „hello-ostechnix“ mit dem Befehl:
# kubectl delete services hello-ostechnix
Beispielausgabe:
service "hello-ostechnix" deleted
Löschen Sie als Nächstes die Bereitstellung „hello-ostechnix“:
# kubectl delete deployment hello-ostechnix
Beispielausgabe:
deployment.apps "hello-ostechnix" deleted
Sobald Sie die Bereitstellung gelöscht haben, wird der mit der Anwendung verknüpfte Pod beendet. Es dauert einige Sekunden, bis die Beendigung abgeschlossen ist.
# kubectl get pods
Beispielausgabe:
NAME READY STATUS RESTARTS AGE hello-ostechnix-5d4cf4df75-jlwff 1/1 Terminating 0 57m
Nach Beendigung der Bereitstellung ist die Anwendung nicht mehr zugänglich.
# kubectl get pods
Beispielausgabe:
No resources found in default namespace.
Pods mit Bildern ausführen
Wir können den 'kubectl run
verwenden '-Befehl zum Erstellen und Ausführen einer Anwendung in einem Pod.
$ kubectl run <POD name> --image=<image name>
Hier kann der Pod-Name beliebig sein und der Image-Name muss spezifisch sein, der in Docker Hub oder einem beliebigen lokalen Repository verfügbar wäre.
Lassen Sie uns einen Pod mit Nginx-Image erstellen.
# kubectl run ostechnix-nginx --image=nginx
Beispielausgabe:
pod/ostechnix-nginx created
Ein Pod namens „ostechnix-nginx“ wurde erstellt. Sie können den Status des Pods mit dem folgenden Befehl überprüfen.
# kubectl get pods
Beispielausgabe:
NAME READY STATUS RESTARTS AGE ostechnix-nginx 1/1 Running 0 4m20s
Sie können zusätzliche Informationen wie den Ort, an dem der Pod ausgeführt wird, und die IP des Pods abrufen, indem Sie den 'wide
verwenden ' Option.
# kubectl get pods -o wide
Beispielausgabe:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ostechnix-nginx 1/1 Running 0 38m 172.17.0.6 ostechnix <none> <none>
Sie können vollständige Informationen über den POD erhalten, indem Sie die 'kubectl describe
verwenden ' Befehl.
# kubectl describe pod ostechnix-nginx
Mit diesem Befehl erhalten Sie die vollständigen Details des POD, wie Containerdetails und ihre Zustände, Details zu Ereignissen, die seit der Erstellung des Pods aufgetreten sind.
Name: ostechnix-nginx Namespace: default Priority: 0 Node: ostechnix/192.168.181.131 Start Time: Thu, 03 Feb 2022 01:40:48 -0800 Labels: run=ostechnix-nginx Annotations: <none> Status: Running IP: 172.17.0.6 IPs: IP: 172.17.0.6 Containers: ostechnix-nginx: Container ID: docker://29eeb0392247aef193d6dff0138f8ef132dfb6359d8e67c3a5e4a21d7e259989 Image: nginx Image ID: docker-pullable://[email protected]:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767 Port: <none> Host Port: <none> State: Running Started: Thu, 03 Feb 2022 01:40:54 -0800 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ggvk6 (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-ggvk6: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 7m26s default-scheduler Successfully assigned default/ostechnix-nginx to ostechnix Normal Pulling 7m24s kubelet Pulling image "nginx" Normal Pulled 7m20s kubelet Successfully pulled image "nginx" in 4.114836826s Normal Created 7m20s kubelet Created container ostechnix-nginx Normal Started 7m20s kubelet Started container ostechnix-nginx [[email protected] ~]#

Sobald Sie fertig sind, können Sie den Pod mit „kubectl delete
“ löschen ' Befehl.
# kubectl delete pod ostechnix-nginx
Beispielausgabe:
pod "ostechnix-nginx" deleted
Überprüfen Sie, ob der Pod gelöscht wurde, indem Sie die verfügbaren Pods auflisten:
# kubectl get pods No resources found in default namespace.

Schlussfolgerung
In diesem Tutorial haben wir das Pod-Konzept in Kubernetes, eine einfache Anwendungsbereitstellung und die Ausführung eines Pods besprochen. Wir werden weitere Details zum Erstellen von Pods mit YAML
haben Definitionsdatei in unseren bevorstehenden Details.