Wir werden speziell über die verschiedenen Kubernetes -Neustart -Richtlinien in diesem Artikel sprechen. Lassen Sie uns zunächst die verschiedenen Richtlinien diskutieren, die bei Kubernetes verwendet werden müssen. Sie können diese Richtlinien verwenden, um zu verhindern, dass eine bestimmte Arbeitsbelastung im Cluster bereitgestellt wird. Während es in der Regel in der Regel strenge Standards im Cluster auferlegt wird, um die Einhaltung der Einhaltung zu gewährleisten.
Was ist die Kubernetes -Neustart -Richtlinie?
Jedes Kubernetes hält sich an einen bestimmten Lebenszyklus. Es beginnt in der „ausstehenden“ Stufe und, wenn ein oder mehrere der primären Container erfolgreich gestartet wurden, übergeht in die „laufende“ Stufe. Abhängig davon, ob die Container in der Pod erfolgreich sind oder scheitern, geht der Prozess dann zur Phase „Erfolg“ oder „fehlgeschlagen“ weiter.
Um die Richtlinien auf der Ebene der angewandten Container neu zu starten, können drei Optionen verwendet werden:
Stets
Jedes Mal, wenn ein Container endet, produziert Kubernetes eine neue, da der Pod jederzeit aktiv sein muss.
Onfailure
Wenn der Container mit einem anderen Rückgabecode als 0 geht, startet er nur einmal neu. Neustart ist für Container, die 0 zurückgeben (Erfolg), nicht erforderlich.
Niemals
Der Container konnte nicht neu gestartet werden.
Jetzt werden wir im folgenden Abschnitt besprechen, wie Sie einen Pod neu starten können.
So starten Sie eine Schote in Kubernetes neu?
Um einen Kubernetes -Pod neu zu starten, geben Sie Befehle mit dem Kubectl -Tool aus. Es wird eine Verbindung zum Kubeapi -Server herstellen. Lassen Sie uns die verfügbaren Optionen erkunden:
Starten Sie einen Behälter in einem Pod neu
Ein Pod kann mehrere Behälter halten. Andererseits stellen Sie im Wesentlichen eine Verbindung zum Primärbehälter innerhalb einer POD her, wenn Sie eine Verbindung dazu herstellen. Sie können eine Verbindung zu jedem Container herstellen, den Sie in einem Fall definiert haben, wenn Sie mehr als einen definiert haben.
Nachfolgend sehen Sie ein Beispiel für Multicontainer-POD-Spezifikationen:
Dies beschreibt ein gemeinsames Volumen und zwei Container. Die HTML -Datei wird vom Nginx -Container bedient, und in jeder Sekunde fügt der Ubuntu -Container der HTML -Datei einen Datumsstempel hinzu.
Da Sie nicht angegeben haben, zu welchem Container eine Verbindung hergestellt werden soll, wählt er automatisch den ersten (NGINX) aus, wenn Sie versuchen, eine Verbindung zu diesem Pod herzustellen. Der Screenshot ist unten beigefügt:
Sie können nun versuchen, den PID 1 -Prozess innerhalb des aktuell aktiven Containers zu beenden. Führen Sie die folgenden Befehle als Root aus, um dies zu erreichen:
Sie können auch das unten beschriebene Kubectl -Tool verwenden:
Nach der POD -Spezifikation wird K8S nun versuchen, den zerstörten Behälter neu zu starten. Dafür wird der Befehl „Beschreiben“ wie folgt verwendet:
Hier ist das Ergebnis des obigen Befehls:
Der gegenwärtige Staat geht "los", während der vorherige Staat "gekündigt wurde.Dies bedeutet, dass der Container nach diesem Ansicht neu gestartet wurde. Allerdings können nicht alle Container auf Root -Anmeldeinformationen zugreifen. Deshalb ist diese Methode möglicherweise nicht sehr nützlich.
Starten eines Schotens durch Skalierung
Die Replik der Replik zu 0 auf 0 zu skalieren und dann bis zu 1 zu skalieren, ist der einfachste Weg, um ihn neu zu starten. Sie müssen stattdessen eine Bereitstellung erstellen. Hier ist eine einfache Möglichkeit, dies zu erreichen:
Skalierung auf 0 und dann zu 1 danach danach. Auf diese Weise wird der Pod beendet und dann in den Cluster umgesetzt:
Die Repliken sind auf 1 gesetzt, wie Sie in diesem Bild sehen können.
Um die Bereitstellungsdetails anzuzeigen, haben wir jetzt „Kubectl GET -Bereitstellungen erhalten.Folgendes ist eine Liste sowohl des Befehls als auch des Ergebniss:
Starten Sie einen Schoten, indem Sie ihn löschen und neu einsetzen
Mit dem Befehl "kubectl delete" können Sie einen Schoten löschen und dann neu einsetzen. Dieser Ansatz ist jedoch eher störend, daher wird er nicht empfohlen.
Starten Sie einen Pod mit Rollout neu
Um eine Schote mit der oben beschriebenen Art und Weise neu zu starten. Mit Kubernetes Version 1.15, Sie können einen Einsatz in rollierender Weise neu starten. Dies ist das vorgeschlagene Verfahren zum Neustarten einer Pod. Geben Sie einfach den folgenden Befehl ein, um loszulegen:
Wenn Sie nun den Bereitstellungsstatus an einem anderen Terminal im Auge behalten, werden Sie den Ereignisfluss wie folgt bemerken:
Wenn es gesund ist, skaliert es die vorherige Replik des Einsatzes und dreht eine neue Nachbildung der Pod auf. Das Ergebnis ist das gleiche, außer bei diesem Ansatz wurde die zugrunde liegende Orchestrierung von Kubernetes behandelt.
Wie können Kubernetes -Pods auf unterschiedliche Weise neu gestartet werden?
Beginnen wir zunächst mit dem Docker -Container. Mit dem folgenden Befehl können Docker -Container neu gestartet werden:
> Docker Neustart Container_ID neu starten
In Kubernetes gibt es jedoch keinen vergleichbaren Befehl, um Pods neu zu starten, insbesondere wenn es keine angegebene YAML -Datei gibt. Alternative können Sie Kubernetes -Pods mit Kubectl -Befehlen neu starten. Die folgenden Befehle sind aufgeführt:
Der Befehl kubectl set env
Eine Methode besteht darin, den Befehl kubectl scale zu verwenden. Dadurch wird die Anzahl der Repliken des Pod geändert, die neu gestartet werden müssen. Im Folgenden finden Sie einen Beispielbefehl zum Einstellen der Repliken im Pod auf zwei:
> Kubectl Scale-Bereitstellung Erstabweichung-Replicas = 2
Rollout -Neustartbefehl
Hier werden wir demonstrieren, wie Sie den Befehl rollout neu starten können, um Kubernetes -Pods neu zu starten:
> Kubectl Rollout Neustart-Bereitstellung Erstabstimmung -n Demo-NamesPace
Der Controller wird aufgefordert, jeden Pod durch den Befehl einzeln auszurotten. Anschließend skaliert es neue Schoten mit dem Replicaset. Bis jeder neue Pod neuer ist als jeder aktuelle Pod, wenn der Controller wieder auftritt, wird dieser Prozess fortgesetzt.
Der Befehl löschen pod
In diesem Abschnitt wird über den Befehl entfernen, um Kubernetes -Pods neu zu starten. Sie können feststellen, dass wir den nächsten Befehl verwendet haben, um das POD -API -Objekt in diesem Bild loszuwerden:
.> Kubectl POD First -Pod -n Demo_NameSpace löschen
Der erwartete, wird durch Löschen des POD -Objekts widerlegt, da die Kubernetes -API deklarativ ist. Um die Konsistenz mit dem erwarteten zu halten, wird der Pod daher neu erstellt.
Ein Pod kann gleichzeitig mit dem vorherigen Befehl neu gestartet werden. Siehe den angehängten Befehl, um mehrere Pods neu zu starten:
> Kubectl Replicaset Pods-Multiple-n Demo_NameSpace löschen
Der oben erwähnte Befehl startet jeden Schoten neu, indem er den gesamten Replikat von Schoten löscht und dann von Grund auf neu erstellt wird.
Abschluss
Dieser Beitrag lieferte Informationen zu den verschiedenen Kubernetes -Neustart -Richtlinien. Wir haben jede Stufe mit Hilfe von Beispielbeispielen illustriert. Probieren Sie diese Befehle auch aus und sehen Sie, welche Ausgabe sie generieren.