Jak naprawić błąd kubernetes

Jak naprawić błąd kubernetes
W każdym środowisku programistycznym użytkownicy będą doświadczać różnych rodzajów błędów. To samo dotyczy dyskusji na temat rozwoju kontenerów. Kubernetes staje się najczęściej używaną platformą do orkiestracji kontenerowej. W rezultacie w środowiskach Kubernetes częściej występują awarie. Dlatego musimy zdawać sobie sprawę z częstych problemów z K8, abyśmy mogli się nimi zająć, gdy tylko się pojawią. W tym artykule omówimy w szczególności błąd oomklowany, ponieważ często występuje podczas pracy z Kubernetes. Porozmawiajmy najpierw o tym, jaki jest błąd oomklowany i dlaczego tak się dzieje.

Co to jest błąd oomklowany?

Oomtlevilled, mówiąc to, jest błąd Kubernetes, który występuje, gdy kapsułek lub kontener używa więcej pamięci, niż jest mu przydzielony. OOM stoi poza pamięcią. Zabity oznacza koniec procesu.

Zwiększenie przydziału pamięci jest łatwym sposobem rozwiązania tego powtarzającego się problemu. Ta prosta technika działa jednak tylko wtedy, gdy pamięć jest nieskończenie obfita, a zasoby są nieograniczone. Dowiedzmy się więcej o błędzie oomklowanego, jego głównych przyczynach, jak go naprawić i jak zrównoważyć przydziały pamięci w następujących sekcjach.

Rodzaje błędu oomklowanego

W Kubernetes błędy oomklilowane występują w dwóch różnych odmianach. Jeden jest oomliklowany: granica nadmierna, a drugi jest oomlikowany: osiągnięty limit pojemnika.

Dowiedzmy się więcej o tych błędach w głębi bardziej.

Oomtled: Błąd nadmiernego przemijania limitu

Gdy agregat limitu kapsuły przekracza dostępną pamięć węzła, może wystąpić błąd. Dlatego jeśli węzeł ma na przykład 6 GB dostępnej pamięci, możesz uzyskać sześć strąków, w których każdy wymaga 1 GB pamięci. Jednak ryzykujesz braku pamięci, jeśli nawet jeden z tych kapsułów jest ustawiony z limitem, powiedzmy, 1.1 gigabajty. Wystarczy Kubernetes, aby zacząć mordować kapsuły to, że jeden kapsuł.

Oomtled: Osiągnięto limit kontenera

Kubernetes kończy aplikację z błędem „Oomlikatilled Container” i kodem wyjścia 137, jeśli ma wyciek pamięci lub próbuje zużywać więcej pamięci niż przydzielony limit.

Jest to zdecydowanie najbardziej podstawowy błąd pamięci, który może się zdarzyć w podkładce. Gdy limit kontenera jest osiągany normalnie, wpływa on tylko na jeden kapsuł.

Powszechne przyczyny błędu oomklowanego

Typowe przyczyny tego błędu można znaleźć na poniższej liście. Należy zauważyć, że występuje wiele dodatkowych powodów, dla których występują błędy oomlefikowane i że wiele z nich jest trudnych do zidentyfikowania i rozwiązania:

  • Po osiągnięciu limitu pamięci kontenera aplikacja doświadcza obciążenia, które jest wyższe niż normalnie.
  • Aplikacja ma wyciek pamięci w wyniku osiągnięcia limitu pamięci kontenera.
  • Węzeł jest nadmiernie przemiany, co oznacza, że ​​całkowita ilość pamięci zużywanej przez PODS przekracza pamięć węzła.

Jak zidentyfikować błąd oomklowany

Status POD można sprawdzić, czy wystąpił błąd oomklowany. Następnie, aby dowiedzieć się więcej o problemie, użyj polecenia Opis lub Get Get. Wyjście polecenia GET PODS, jak pokazano następująco, wymienia wszelkie awarie POD, które obejmują wad.

Uruchom polecenie „Kubectl Get Pods”, aby znaleźć błąd. Status POD jest pokazany jako zakończenie. Zobacz następujące polecenie i zrzut ekranu:

> kubectl zdobądź strąki

Nazwa kapsuła, jego status, ile razy zaczął się, i wiek kapsuły są uzyskiwane przez polecenie „Get Pods”. Tutaj widać, że jeśli kapsułka pęknie z powodu oomliklowanego problemu, Kubernetes sprawia, że ​​błąd jest bardzo oczywisty w statusie POD.

Jak rozwiązać błąd oomklowany?

Zbadajmy teraz rozwiązanie błędu oomlefilowanego.

Przede wszystkim zbieramy dane i zapisujemy zawartość pliku do późniejszego użycia. Aby to zrobić, najpierw wykonujemy polecenie „Kubectl Opis Pod”. Wykonane polecenie jest załączone w następujący sposób:

> Kubectl Opisz pod-one/tmp/Soluving_OomFilled_error.tekst

Musisz teraz przejrzeć zdarzenia POD dla kodu wyjścia 137. Poszukaj następującej wiadomości (patrz następujący zrzut ekranu) w sekcji zdarzenia pliku tekstowego pliku.

Z powodu ograniczeń pamięci kontener jest zakończony kodem wyjściowym 137.

Istnieją dwa najważniejsze przyczyny błędu oomklowanego. Pierwszym powodem jest to, że POD jest zakończony z powodu limitu kontenera, a drugim powodem jest zakończenie kapsuł. Musisz zbadać wydarzenia najnowszej historii kapsuła, aby ustalić, co spowodowało problem.

Poprzednia sekcja pomaga zidentyfikować błąd oomklowany. Po zakończeniu tego konieczne są zastosowanie następujące rozważania.

Jeśli kapsułka zostanie zakończona po osiągnięciu limitu kontenera, należy pamiętać o tych punktach:

  • Przeanalizuj, czy Twoja aplikacja potrzebuje więcej pamięci. Na przykład, jeśli aplikacja jest witryną, która ma większy ruch, może wymagać więcej pamięci niż pierwsza planowana. W takim przypadku zwiększenie limitu pamięci kontenera w specyfikacji POD rozwiązuje problem.
  • Wyciek pamięci może wystąpić w programie, jeśli użycie pamięci wzrośnie nieoczekiwanie. Możesz łatwo naprawić wyciek pamięci i debugować aplikację. W tej sytuacji zwiększenie limitu pamięci nie jest zalecanym rozwiązaniem, ponieważ aplikacja zużywa wiele zasobów na węzłach.

Jeśli powód wypowiedzenia POD jest nadmierny, możesz przestrzegać tych wytycznych:

  • Nadmierne odmianę w węźle może również wystąpić, gdy kapsuły mogą się zorganizować w węźle.
  • Ważne jest, aby znaleźć powód, dla którego Kubernetes kończy kapsuł. Udostępniaj aktualizacje żądań pamięci i ogranicz wartości, aby uniknąć nadmiernego przemijania węzła.

Wniosek

Podsumowując, awarie POD są spowodowane bardzo prostym błędem oomklowanego. Posiadanie odpowiedniego planu alokacji zasobów dla instalacji Kubernetes jest najlepszym sposobem poradzenia sobie z tym problemem. Przez dokładnie analizując wykorzystanie zasobów aplikacji i dostępność zasobów w klastrze K8S, użytkownicy mogą zdefiniować ograniczenia zasobów, które nie wpłyną na funkcjonalność programu lub węzła.