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:
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:
Jeśli powód wypowiedzenia POD jest nadmierny, możesz przestrzegać tych wytycznych:
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.