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:
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.tekstNastę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:
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.