Jak naprawić kapsuły Kubernetes utknięte w statusie końcowym

Jak naprawić kapsuły Kubernetes utknięte w statusie końcowym
Kubernetes Podstawa Błąd zakończenia odbywa się, gdy kapsuł. Może to być spowodowane kilkoma charakterystycznymi problemami i może być dość irytujące dla programistów. Zdolność kapsuła do zakończenia może zostać uwięziona z różnych powodów. Możliwe są niedobory zasobów i problemy związane z POD. Bez względu na problem, problem Kubernetes Sced Problem może być głównym bólem głowy dla programistów i może powodować ekstremalne opóźnienia we wdrażaniu aplikacji. W tym artykule dotyczy przyczyn tego problemu i ich krok po kroku rozwiązanie. Możesz dowiedzieć się o problemie i jak go szczegółowo go rozwiązać.

Co powoduje ten problem?

Rozpoznanie podstawowej przyczyny tego problemu jest kluczowym krokiem do rozwiązania tego problemu. Niektóre powody, dla których Pods mogą utknąć w „stanie zakończenia”, obejmuje:

Powód 1: Brak zasobów

Kubernetes kapsuły wymagają odpowiednich ilości zasobów do funkcjonowania bez żadnych problemów. Jeśli istnieje niewystarczająca liczba zasobów, wiele kapsuł może zacząć konkurować ze sobą o zasoby, co w rezultacie może spowodować, że jeden z kapsuł.

Powód 2: Problemy z samym kapsułem

Problem z konfiguracją lub kodem POD może spowodować, że utknie w stanie zakończenia. W przypadku finizerów w POD, podstawowym problemem może być to, że finalizatorzy nie są ukończeni. Może się również zdarzyć, że kapsuł.

Powód 3: Węzeł podstawowy może zostać złamany

Ilekroć kapsuły Kubernetes nie wychodzą z warunku zakończenia, bazowy węzeł prawdopodobnie nieprawidłowo działa. Kiedy to nastąpi, aplikacje mogą dodatkowo nie zaplanować, powodując niedostępność. Może to stać się odpływem finansowym dla Twojej organizacji ze względu na fakt, że problem ten może powodować bezcelowe skalowanie. Wiele zespołów zdiagnozowanie tego problemu może być trudne, ponieważ strąki Kubernetes często kończą. Rozwiązanie tego problemu jest złożone, ponieważ wyczerpanie węzłów w Kubernetes musi być skonfigurowane w sposób, aby pracować dla twojego środowiska.

Jeśli z pliku konfiguracyjnego zobaczysz, że wszystkie kapsuły w jednym węźle znajdują się w stanie „zakończenia”, może to być problem.

Jak rozwiązać ten problem?

Następujące sposoby mogą pomóc w łatwym rozwiązaniu problemu.

Usuwanie kapsuła

Najpierw musisz spróbować ręcznie usunąć POD, wykonując następujące kroki:

  1. kubectl delete -Wait = false kaps
  2. Kubectl Delete -Havary -Aeriod = 1 Pod
  3. kubectl delete -have -aeriod = 0 -Force Pod

Istnieje jednak niewielka szansa, że ​​ręczne usunięcie kapsułki z przestrzeni nazw pomoże rozwiązać problem, nawet jeśli podasz dokładną nazwę kapsułki, którą chcesz usunąć.

Jeśli tak, to może być to, że kapsułka nie kończy się, ponieważ pewien proces nie reaguje na sygnał. Będziesz więc musiał dowodzić, że kapsułek został usunięty, używając następującego polecenia:

> kubectl delete pod [name_of_the_pod] -high -period = 0 -Force kubectl delete Pod [name_of_the_pod] -gravePeriod = 0 -Force -n [name_of_the_namespace]

Pamiętaj, aby dodać nazwę swojego kapsuła w poleceniu, jeśli jest w dedykowanej przestrzeni nazw.

Usuwanie finalizatorów

Jeśli mocne usunięcie kapsułów nie działa, głównym problemem może być sam kapsuła. Częstym problemem z POD jest niezdolność finalizatorów do ukończenia, co może być głównym problemem, który powoduje, że kapsuł. Tak więc najpierw będziesz potrzebować, aby sprawdzić finizerów w POD, otrzymując konfigurację kapsuła:

> kubectl get pod -n [przestrzeń nazwy] -p [name_of_the_pod] -o yaml> /tmp /config_file.tekst

Następnie przeszukaj pod metadaną w sekcji Finalizerów. Jeśli znaleziono jakiekolwiek finalizatory, musisz je usunąć, wykonując następujące czynności:

> Kubectl Patch Pod [name_of_the_pod] -p '"metadata": "finalizers": null' '

Uruchom ponownie kubelet

Jeśli wspomniane rozwiązania nie rozwiązują tego problemu, powinieneś spróbować ponownie uruchomić kubelet. Jednak może być konieczne zaangażowanie administratora, jeśli nie masz zgody. Jeśli masz dostęp, powinieneś ponownie uruchomić proces Kubeleta, sshing do węzła.

Jak uniknąć w przyszłości strąków?

Są to kilka kroków, które możesz podjąć, aby upewnić się, że ten problem nie wystąpił w pierwszej kolejności:

  • Najpierw dokładnie sprawdź swoje kapsuły, aby sprawdzić, czy działają poprawnie przed ich wdrożeniem.
  • Upewnij się, że masz wystarczające zasoby. Brak zasobów może spowodować, że kapsuły zaczną konkurować ze sobą o zasoby, co w rezultacie może spowodować utknięcie jednego z kapsułów w stanie końcowym.
  • Upewnij się, że Twoje kapsuły nie konsumują zbyt wielu zasobów.
  • Upewnij się, że utrzymuj klaster Kubernetes na bieżąco, aby uniknąć problemów w przyszłości.
  • Ciągle sprawdzaj, czy istnieją jakieś problemy z konfiguracją lub kodem twoich kapsułek.

Wniosek

Problemy, które mogą pojawić się w wyniku utknięcia kapsułki w stanie zakończenia, sprawiają, że warto podjąć dodatkowe kroki w celu zapewnienia, przed wdrożeniem, że na przykład nie ma żadnych problemów z samym kapsułem, może wystąpić problem z konfiguracją kapsułki, która najprawdopodobniej spowoduje utknięcie kapsułki w stanie zakończenia. Powinieneś także starać się unikać rzeczy, które mogą skutkować tym problemem, na przykład brak zasobów lub klaster Kubernetes nie jest aktualny. Jeśli ten problem nadal nastąpi pomimo podjęcia niezbędnych kroków, aby go uniknąć, pierwszą rzeczą, która będzie trzeba zrobić, będzie wskazanie pierwotnej przyczyny tego problemu i odpowiednio użycie rozwiązania.