GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen und verwalten Sie Kubernetes-Pods unter Linux

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.


Linux
  1. So erstellen Sie harte und symbolische Links in Linux

  2. So verwalten Sie den Ablauf und die Alterung von Benutzerkennwörtern in Linux

  3. So stellen Sie Ihren ersten Pod in einem Kubernetes-Cluster bereit

  4. So erstellen Sie einen Alias ​​und verwenden den Alias-Befehl in Linux

  5. So löschen Sie Pods in Kubernetes [Schnelle K8s-Tipps]

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux

FTP-Konto:wie man es erstellt und verwaltet

So erstellen und verwalten Sie virtuelle Maschinen in KVM

So erstellen und verwalten Sie neue Benutzer unter Linux

Linux-crontab-Befehl zum Erstellen und Verwalten von Cron-Jobs

So erkennen und verwalten Sie Geräte unter Linux