Kubernetes może automatycznie wykrywać awarie węzłów i przesuwać kapsuły na inne węzły. Jedynym problemem jest czas potrzebny na spadek węzła i rozmieszczenie kapsuły. Zobaczmy, jak możesz spuścić węzeł w Kubernetes. Ale najpierw upewnij się, że masz w systemie zainstalowany Kubectl. Aby wykonać polecenia, musisz również zainstalować klaster minikupe, a następnie uruchomić okno terminala. Możesz użyć minikube, postępując zgodnie z poniższym poleceniem.
Oprócz tego upewnij się, że Twój serwer Kubernetes musi być wersją 1.5 lub nowsze. Wprowadź „wersję kubectl”, jeśli chcesz sprawdzić wersję. Musisz spełnić określone wymagania, aby skutecznie wykonać to zadanie. Nie potrzebujesz, aby aplikacje były dostępne podczas drenażu węzła lub nie potrzebujesz ich, aby były w ogóle bardzo dostępne. Dowiedziałeś się o koncepcji PoddisRuptionBudget i skonfigurował poddisRuptionBudgets dla aplikacji, które ich wymagają.
W razie potrzeby skonfiguruj budżet na zakłócenia
Aby upewnić się, że obciążenia są dostępne podczas konserwacji, utwórz poddisRuptionBudget. Najpierw skonfiguruj PoddisRuptionBudgets, a następnie kontynuuj tę poradę, jeśli dostępność ma kluczowe znaczenie dla wszelkich aplikacji, które mogą działać w węźle, które wyczerpujesz.
Zastosowanie drenażu kubectl do usuwania/usuwania węzła
Możesz użyć drenażu Kubectl, aby eksmitować wszystkie swoje kapsuły przed wykonaniem konserwacji w bezpiecznych eksmisjach węzła, kończą pojemniki kapsułowe w sposób uporządkowany.
Kubectl Drain ostatecznie ignoruje niektóre kapsuły w węźle, które nie można domyślnie zniszczyć. Dlatego bezpieczne jest zamknięcie węzła poprzez wyłączenie jego fizycznej maszyny lub, jeśli działa na platformie chmurowej, odinstalowanie maszyny wirtualnej. Aby rozpocząć, zidentyfikuj węzeł, który chcesz spuścić po nazwie. Polecenie poniżej wyświetli listę wszystkich węzłów wymienionych w klastrze.
Następnie poinformuj Kubernetes, że węzeł powinien zostać wyczerpany:
Po powrocie węzła (i bez powodowania błędu) możesz go wyłączyć (lub równoważnie, jeśli na platformie chmurowej usuń maszynę wirtualną, która popiera węzeł). Jeśli zostawisz węzeł w klastrze do konserwacji, użyj następującego polecenia, aby poinformować Kubernetes, że może rozpocząć zmianę harmonogramu nowych strąków w węźle.
Wyczerpanie licznych węzłów jednocześnie
Tylko jeden węzeł powinien odbierać instrukcję drenażu Kubectl na raz. Możesz jednak wykonać wiele instrukcji drenażu Kubectl jednocześnie, w różnych zaciskach lub tle dla różnych węzłów. Nawet jeśli jednocześnie działają liczne instrukcje drenażu, należy zaobserwować poddisurptionbudget.
Jeśli masz statefuls z 3 replikami i poddisuruptaptget z 2, Kubectl Drenain usunie kapsułę tylko wtedy, gdy wszystkie te kapsuły są gotowe. Jeśli uruchomisz wiele poleceń drenażu w tym samym czasie, Kubernetes uhonoruje poddisRuptionBudget i gwarantuje, że wykonano tylko jeden drenaż.
Eksmisja w Kubernetes
Możesz użyć interfejsu API eksmisji do programowego inicjowania eksmisji, jeśli nie chcesz używać drenażu Kubectl (na przykład w celu uniknięcia wykonywania polecenia zewnętrznego lub lepszej kontroli w całym procesie eksmisji POD).
Musisz najpierw zapoznać się z klientami języka Kubernetes, aby użyć interfejsu API. Podpresource eksmisji kapsułowej można traktować jako akcję usuwania na POD, która jest kontrolowana przez politykę. Aby wypróbować eksmisję, opublikujesz próbę operacji (lub próbować dokładniej skonstruować eksmisji).
Utknięte eksmisje
O ile nie działasz, wniosek może zostać złamany, a API eksmisji zawsze zwróci 429 lub 500. Podobne efekty można również zobaczyć, czy ostatni kapsuła, która została eksmitowana, ma okres karencji długoterminowej.
W tej sytuacji są dwie opcje: przerywanie lub zatrzymanie automatycznej operacji. Uruchom ponownie automatyzację po ustaleniu przyczyny zablokowanej aplikacji. Zamiast korzystać z interfejsu API eksmisji, usuń kapsułkę z płaszczyzny sterowania klastra, gdy minie rozsądny czas.
Wniosek
W tym artykule rozmawialiśmy o zastosowaniu drenażu Kubectl. Wyjaśniono różne polecenia, aby pomóc ci zrozumieć metodę spuszczenia w Kubernetes.