So beheben Sie den Kubernetes -Fehler

So beheben Sie den Kubernetes -Fehler
In jeder Softwareentwicklungsumgebung erfahren Benutzer unterschiedliche Arten von Fehlern. Gleiches gilt für die Erörterung der Containerentwicklungen. Kubernetes wird zur am weitesten verbreiteten Plattform für die Containerorchestrierung. Infolgedessen treten in Kubernetes -Umgebungen Fehler wahrscheinlicher auf. Daher müssen wir uns der häufigen Probleme mit K8 bewusst sein, damit wir sie angehen können, sobald sie auftreten. In diesem Artikel werden wir insbesondere den überfluteten Fehler diskutieren, da er häufig bei der Arbeit mit Kubernetes auftritt. Sprechen wir zuerst darüber, was der überflutete Fehler ist und warum es passiert.

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:

  • Wenn das Containerspeichergrenze erreicht ist, erfährt die Anwendung eine Last, die höher als normal ist.
  • Die Anwendung hat ein Speicherleck aufgrund der zu erreichenden Containerspeichergrenze.
  • Der Knoten wird überbewertet, was bedeutet, dass die Gesamtmenge des von Pods verbrauchten Speichers den Speicher des Knotens übersteigt.

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:

  • Analysieren Sie, ob Ihre Anwendung mehr Speicher benötigt. Wenn beispielsweise die Anwendung eine Website ist, die mehr Verkehr erhält, kann sie mehr Speicher benötigen als zuerst geplant. In diesem Fall löst das Erhöhen der Speichergrenze des Containers in der POD -Spezifikation das Problem.
  • Ein Speicherleck kann im Programm auftreten, wenn die Speicherverwendung unerwartet zunimmt. Sie können das Speicherleck problemlos beheben und die Anwendung debuggen. In dieser Situation ist die Erhöhung der Speichergrenze keine empfohlene Lösung, da die Anwendung viele Ressourcen für die Knoten verbraucht.

Wenn der Pod -Beendigungsgrund einen Knotenüberzug ist, können Sie folgende Richtlinien befolgen:

  • Überbeamte eines Knotens kann auch auftreten, wenn die Pods auf einem Knoten organisieren dürfen.
  • Es ist wichtig herauszufinden, warum Kubernetes den Pod mit dem übergroßen Fehler endet. Aktualisieren Sie Aktualisierungen mit den Speicheranforderungen und begrenzen Werte, um zu vermeiden, dass der Knoten überbewertet wird.

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.