Kubernetes kan oppdage nodesvikt og planlegge pods til andre noder automatisk. Det eneste problemet er tiden det tar for noden å gå ned og poden skal omlegges. La oss se hvordan du kan tømme en node i Kubernetes. Men først, sørg for at du har installert Kubectl på systemet ditt. For å utføre kommandoene, må du også installere Minikube -klyngen og deretter starte terminalvinduet. Du kan bruke Minikube ved å følge den nedenfor-nevnte kommandoen.
I tillegg til det, må du sørge for at Kubernetes -serveren din må være versjon 1.5 eller nyere. Skriv inn "Kubectl -versjonen" hvis du vil sjekke versjonen. Du må oppfylle visse krav for å fullføre denne oppgaven. Du trenger ikke at applikasjonene dine skal være tilgjengelige under nodenavløpet, eller du trenger ikke at de i det hele tatt er tilgjengelige. Du har lært om poddisruptionsbudget -konseptet og setter opp poddisruptionsbudsjett for appene som krever dem.
Konfigurer et forstyrrelsesbudsjett om ønskelig
For å sikre at arbeidsmengdene dine er tilgjengelige under vedlikehold, oppretter du et poddisruptionbudsjett. Konfigurer en poddisruptionsbudsjett først, og fortsett deretter å følge dette rådet hvis tilgjengeligheten er avgjørende for alle applikasjoner som kan kjøres på noden (e) som du tapper.
Bruken av Kubectl -avløp for å fjerne/slette en node
Du kan bruke Kubectl -avløp for å kaste ut alle belgene dine før du utfører vedlikehold på en nodesikker utkast avslutter podens containere på en ryddig måte mens du holder deg i poddisruptionsbudsene som du har etablert.
Kubectl Drain ignorerer til slutt noen belg på noden som ikke er mulig å bli ødelagt som standard. Det er derfor trygt å slå av noden ved å slå av den fysiske maskinen, eller hvis den kjører på en skyplattform, avinstallere den virtuelle maskinen. For å begynne, identifiser noden du ønsker å drenere med navnet. Kommandoen nedenfor vil vise en liste over alle nodene som er nevnt i klyngen din.
Deretter informer Kubernetes om at noden skal tappes:
Etter at noden har kommet tilbake (og uten å forårsake en feil), kan du slå den av (eller tilsvarende, hvis på en skyplattform, slett den virtuelle maskinen som støtter noden). Hvis du legger igjen en node i klyngen for vedlikehold, bruk følgende kommando for å fortelle Kubernetes at den kan begynne å planlegge nye belg på noden.
Tapper mange noder samtidig
Bare en node skal motta KUBECTL -avløpsinstruksjonen om gangen. Du kan imidlertid utføre mange KUBECTL -avløpsinstruksjoner samtidig, i forskjellige terminaler, eller bakgrunnen, for forskjellige noder. Selv om mange avløpsinstruksjoner fungerer samtidig, må poddisruptionbudsjett observeres.
Hvis du har et Statefulset med 3 replikker og en poddisruptionbudsjett på 2, vil Kubectl -avløp bare fjerne en pod hvis alle disse belgene er klare. Hvis du kjører flere avløpskommandoer samtidig, vil Kubernetes hedre poddisruptionbudsjettet og garantere at bare ett avløp blir utført.
Utkastelse i Kubernetes
Du kan bruke Eviction API til å programmatisk sette i gang utkast hvis du ikke er villig til å bruke Kubectl -avløp (for eksempel for å unngå å utføre en ekstern kommando eller ha bedre kontroll gjennom hele Pod Eviction -prosessen).
Du må først være kjent med Kubernetes språkklienter for å bruke API. En pods Eviction SubResource kan tenkes som en slett handling på poden som er policy-kontrollert. For å prøve en utkastelse legger du ut en forsøk på operasjon (eller å prøve å konstruere en utkastelse mer nøyaktig).
Stuck Evictions
Med mindre du handler, kan en søknad bli ødelagt, og Eviction API vil alltid returnere 429 eller 500. Lignende effekter kan også sees om den siste pod som skal kastes ut har en lang avslutningsfrekvensperiode.
Det er to alternativer i denne situasjonen: Avbryt eller pause den automatiske driften. Start automatiseringen på nytt etter å ha bestemt årsaken til den blokkerte applikasjonen. I stedet for å bruke Eviction API, slett poden fra klyngens kontrollplan når det har gått en rimelig tid.
Konklusjon
I denne artikkelen har vi snakket om bruken av Kubectl Drain. Ulike kommandoer blir forklart for å hjelpe deg med å forstå metoden for drenering i Kubernetes.