Was ist der Fehler?
Einfach ausgedrückt ist ein Kubernetes -Fehler, der auftritt, wenn ein Schoten oder ein Container mehr Speicher verwendet, als ihm zugeteilt wird. Das OOM steht für Out of Memory. Getötet bedeutet das Ende des Prozesses.
Das Erhöhen der Speicherzuteilung ist eine einfache Möglichkeit, dieses wiederkehrende Problem zu lösen. Diese einfache Technik funktioniert jedoch nur, wenn das Gedächtnis unendlich reichlich vorhanden ist und die Ressourcen grenzenlos sind. Lassen Sie uns mehr über den überfluteten Fehler, seine Hauptursachen, die Behebung und die Ausgleich der Speicherzuweisungen in den folgenden Abschnitten erfahren.
Arten des überfluteten Fehlers
In Kubernetes gibt es in zwei unterschiedlichen Variationen, die Fehler in zwei verschiedenen Variationen erheben. Einer ist ausgestoßen: Begrenzen Sie den Überbeamten und der zweite ist ausgestoßen: Containergrenze erreicht.
Erfahren wir mehr über diese Fehler ausführlicher.
Oomkilled: Überbeamten Fehler begrenzen
Wenn das Aggregat der POD -Grenze den verfügbaren Speicher des Knotens überschreitet, kann ein Fehler auftreten. Wenn ein Knoten beispielsweise 6 GB verfügbares Speicher hat, können Sie sechs Schoten erhalten, bei denen jeweils 1 GB Speicher benötigt wird. Sie führen jedoch das Risiko aus, dass der Speicher ausgeht, wenn selbst einer dieser Pods mit einer Grenze von beispielsweise 1 eingerichtet ist.1 Gigabyte. Alles, was es braucht, bis Kubernetes mit dem Ermordung der Pods beginnt.
Oomkilled: Behältergrenze erreicht
Kubernetes beendet eine Anwendung mit einem Fehler „Oomkilled-Container-Limit“ und beenden Code 137, wenn es über ein Speicherleck oder versucht wird, mehr Speicher zu konsumieren als die zugewiesene Grenze.
Dies ist bei weitem der elementarste Speicherfehler, der in einem Pod auftreten kann. Wenn die Containergrenze normal erreicht wird, wirkt sich im Gegensatz zum Grenzüberschussfehler nur auf einen Pod aus, der sich auf die Gesamt -RAM -Kapazität des Knotens auswirkt.
Häufige Ursachen für den überfluteten Fehler
In der folgenden Liste finden Sie die typischen Ursachen dieses Fehlers. Beachten Sie, dass es zahlreiche zusätzliche Gründe gibt, warum Fehler auftreten und dass viele davon schwierig sind, zu identifizieren und zu lösen:
So identifizieren Sie den überfluteten Fehler
Der POD -Status kann überprüft werden, um festzustellen. Um mehr über das Problem zu erfahren, verwenden Sie den Befehl beschreiben oder erhalten. Die Ausgabe des Get Pods -Befehls, wie im Folgenden zu sehen ist, listet alle POD -Abstürze auf.
Führen Sie den Befehl „kubectl get Pods“ aus, um den Fehler zu finden. Der POD -Status wird als Beendigung angezeigt. Siehe den folgenden Befehl und den Screenshot:
> kubectl bekommen Pods
Der Name des Pods, dessen Status, wie oft er begann, und das Alter des Pods werden vom Befehl „Get Pods“ erhalten. Hier können Sie sehen, dass Kubernetes den Fehler im POD -Status sehr deutlich macht.
So lösen Sie den überfluteten Fehler?
Lassen Sie uns nun eine Lösung für den überfluteten Fehler untersuchen.
Zunächst sammeln wir die Daten und speichern den Inhalt der Datei für die spätere Verwendung. Dazu führen wir zuerst den Befehl „kubectl beschreiben“ aus. Der ausgeführte Befehl ist wie folgt beigefügt:
> kubectl beschreiben pod pod-one/tmp/lösungen_oomkilliert_error.txt
Sie müssen jetzt die POD -Ereignisse für den Ausgangscode 137 durchsehen. Suchen Sie nach der folgenden Nachricht (siehe folgende Screenshot) im Ereignisabschnitt der Textdatei der Datei.
Aufgrund von Speicherbeschränkungen wird der Container mit dem Exit -Code 137 beendet.
Es gibt zwei wichtigste Gründe für den überfluteten Fehler. Der erste Grund ist, wenn der Pod aufgrund der Containergrenze beendet wird und der zweite Grund ist. Sie müssen die Ereignisse der jüngsten Geschichte der POD untersuchen, um zu bestimmen, was das Problem verursacht hat.
Der vorherige Abschnitt hilft Ihnen, den überfluteten Fehler zu identifizieren. Sobald Sie damit fertig sind, sind die folgenden Überlegungen erforderlich, um sich zu bewerben.
Wenn der Pod beendet wird, wenn die Containergrenze erreicht ist, sollten diese Punkte berücksichtigt werden:
Wenn der Pod -Beendigungsgrund einen Knotenüberzug ist, können Sie folgende Richtlinien befolgen:
Abschluss
Zusammenfassend lässt sich sagen. Ein geeigneter Ressourcenallokationsplan für die Kubernetes -Installationen ist der beste Weg, um dieses Problem zu lösen. Durch sorgfältige Analyse der Ressourcenauslastung der Anwendung und der Verfügbarkeit der Ressourcen im K8S -Cluster können die Benutzer die Ressourcenbeschränkungen definieren, die die Funktionalität des Programms oder des Knotens nicht beeinflussen.