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

So starten Sie Pods in Kubernetes neu [Schneller K8s-Tipp]

Manchmal kann es vorkommen, dass Sie Ihren Pod neu starten müssen. Zum Beispiel, wenn sich Ihr Pod im Fehlerzustand befindet.

Abhängig von der Neustartrichtlinie versucht Kubernetes selbst, neu zu starten und das Problem zu beheben.

Aber wenn das nicht funktioniert und Sie die Fehlerquelle nicht finden können, ist ein manueller Neustart des Kubernetes-Pods die schnellste Möglichkeit, Ihre App wieder zum Laufen zu bringen.

So starten Sie Pods in Kubernetes neu

Leider gibt es keinen kubectl-Neustart-Pod-Befehl für diesen Zweck. Hier sind einige Möglichkeiten, wie Sie Ihre Pods neu starten können:

  1. Rollout-Pod wird neu gestartet
  2. Skalieren der Anzahl der Replikate

Lassen Sie mich Ihnen beide Methoden im Detail zeigen.

Methode 1:Rollout-Pod wird neu gestartet

Ab Kubernetes-Version 1.15 können Sie einen rollierenden Neustart Ihrer Bereitstellungen durchführen.

Der Controller beendet einen Pod nach dem anderen und verlässt sich auf das ReplicaSet, um neue Pods hochzuskalieren, bis alle Pods neuer sind als zum Zeitpunkt des Neustarts. Meiner Meinung nach ist dies der beste Weg, um Ihre Pods neu zu starten, da Ihre Anwendung nicht heruntergefahren wird.

Hinweis: Einzelne Pod-IPs werden geändert.

Nehmen wir ein Beispiel. Sie haben eine Bereitstellung namens my-dep, die aus zwei Pods besteht (da replik auf zwei gesetzt ist).

[email protected]:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           13s

Rufen wir die Pod-Details ab:

[email protected]:~# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
my-dep-6d9f78d6c4-8j5fq   1/1     Running   0          47s   172.16.213.255   kworker-rj2   <none>           <none>
my-dep-6d9f78d6c4-rkhrz   1/1     Running   0          47s   172.16.213.35    kworker-rj1   <none>           <none>

Lassen Sie uns nun den Neustart für die my-dep-Bereitstellung mit einem Befehl wie dem folgenden durchführen:

kubectl rollout restart deployment name_of_deployment

Erinnern Sie sich an den Namen der Bereitstellung aus den vorherigen Befehlen? Verwenden Sie es hier:

[email protected]:~# kubectl rollout restart deployment my-dep
deployment.apps/my-dep restarted

Sie können beobachten, wie alte Pods beendet und neue erstellt werden, indem Sie kubectl get pod -w verwenden Befehl:

[email protected]:~# kubectl get pod -w
NAME                      READY   STATUS              RESTARTS   AGE
my-dep-557548758d-kz6r7   1/1     Running             0          5s
my-dep-557548758d-svg7w   0/1     ContainerCreating   0          1s
my-dep-6d9f78d6c4-8j5fq   1/1     Running             0          69s
my-dep-6d9f78d6c4-rkhrz   1/1     Terminating         0          69s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          69s
my-dep-557548758d-svg7w   0/1     ContainerCreating   0          1s
my-dep-557548758d-svg7w   1/1     Running             0          3s
my-dep-6d9f78d6c4-8j5fq   1/1     Terminating         0          71s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          72s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          74s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          74s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          76s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          76s

Wenn Sie die Pods jetzt überprüfen, können Sie sehen, dass sich die Details hier geändert haben:

[email protected]:~# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
my-dep-557548758d-kz6r7   1/1     Running   0          42s   172.16.213.43    kworker-rj1   <none>           <none>
my-dep-557548758d-svg7w   1/1     Running   0          38s   172.16.213.251   kworker-rj2   <none>           <none>

Methode 2. Skalieren der Anzahl der Replikate

In einer CI/CD-Umgebung kann der Prozess zum Neustarten Ihrer Pods bei Auftreten eines Fehlers lange dauern, da der gesamte Build-Prozess erneut durchlaufen werden muss.

Ein schnellerer Weg, dies zu erreichen, ist die Verwendung der kubectl scale Befehl, um die Replikatnummer auf null zu ändern, und sobald Sie eine Zahl größer als null festlegen, erstellt Kubernetes neue Replikate.

Lass es uns versuchen. Überprüfen Sie zuerst Ihre Pods:

[email protected]:~# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-557548758d-kz6r7   1/1     Running   0          11m
my-dep-557548758d-svg7w   1/1     Running   0          11m

Rufen Sie die Bereitstellungsinformationen ab:

[email protected]:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           12m

Setzen Sie nun die Replikationsnummer auf Null:

[email protected]:~# kubectl scale deployment --replicas=0 my-dep
deployment.apps/my-dep scaled

Und dann wieder auf zwei setzen:

[email protected]:~# kubectscale deployment --replicas=2 my-dep
deployment.apps/my-dep scaled

Prüfen Sie jetzt die Pods:

[email protected]:~# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-557548758d-d2pmd   1/1     Running   0          10s
my-dep-557548758d-gprnr   1/1     Running   0          10s

Sie haben Kubernetes Pods erfolgreich neu gestartet.

Verwenden Sie eine der oben genannten Methoden, um Ihre App schnell und sicher zum Laufen zu bringen, ohne die Endnutzer zu beeinträchtigen.

Nachdem Sie diese Übung durchgeführt haben, stellen Sie bitte sicher, dass Sie das Kernproblem finden und beheben, da ein Neustart Ihres Pods nicht funktioniert Beheben Sie das zugrunde liegende Problem.

Ich hoffe, Ihnen gefällt dieser Kubernetes-Tipp. Vergessen Sie nicht, mehr zu abonnieren.

Rakesh Jain
DevOps-Profi | RCA | Jenkins | Git | Docker | Kubernetes | Ansible | Prometheus | Grafana | AWS-Cloud

Linux
  1. So installieren Sie Curl unter Ubuntu [Kurztipp]

  2. So finden Sie die Länge der Zeichenfolge in Bash [Schneller Tipp]

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

  4. So löschen Sie eine Kubernetes-Bereitstellung [Schnelle K8s-Tipps]

  5. So lesen Sie Knoten in Kubernetes [Schneller K8s-Tipp]

So erstellen Sie ein StatefulSet in Kubernetes

So erstellen und verwalten Sie Kubernetes-Pods unter Linux

So starten Sie ein Netzwerk in Ubuntu neu [Anfängertipp]

So fügen Sie neue Pinsel in GIMP hinzu [Kurztipp]

Wie man Bilder in GIMP zuschneidet [Quick Tip]

So fügen Sie ein Verzeichnis zu PATH in Linux hinzu [Kurztipp]