Hvordan fikse Kubernetes pods fast i avslutningsstatus

Hvordan fikse Kubernetes pods fast i avslutningsstatus
Kubernetes Pod Stuck Terminination Feil finner sted når en pod forblir i "avslutning" -tilstanden i en lengre periode. Dette kan være forårsaket av flere særegne problemer og kan være ganske irriterende for utviklere. En pods evne til å avslutte kan bli fanget av forskjellige årsaker. Ressursmangel og POD-relaterte problemer er begge mulig. Uansett problem, kan Kubernetes Pod Stuck Terminination -problemet være en stor hodepine for utviklere og kan forårsake ekstreme forsinkelser i å distribuere applikasjoner. Denne artikkelen omhandler årsakene til dette problemet og deres trinn-for-trinn-løsning. Du kan lære om problemet og hvordan du løser det i full detalj her.

Hva forårsaker dette problemet?

Å gjenkjenne årsaken til dette problemet er et kritisk skritt for å løse dette problemet. Noen grunner til at pods kan sitte fast i en "avslutningstilstand" inkluderer:

Årsak nr. 1: Mangel på ressurser

Kubernetes pods krever riktige mengder ressurser for å fungere uten problemer. Hvis det er et utilstrekkelig antall ressurser, kan flere pods begynne å konkurrere med hverandre om ressurser, noe som som et resultat kan føre til.

Årsak nr. 2: Problemer med selve poden

Et problem med konfigurasjonen eller koden til POD kan føre til at den sitter fast i en avsluttende tilstand. Hvis det er finalisatorer i podet, kan rotproblemet være at finalisererne ikke er fullført. Det kan også være tilfelle at pod ikke svarer på termineringssignalet.

Årsak nr. 3: En underliggende node kan bli ødelagt

Hver gang Kubernetes pods ikke vil avslutte avsluttende tilstanden, er den underliggende noden sannsynligvis funksjonsfeil. Når dette finner sted, kan apper i tillegg ikke planlegge å forårsake utilgjengelighet. Dette kan bli et økonomisk avløp for organisasjonen din på grunn av at dette problemet kan forårsake meningsløs skalering. Det kan være utfordrende for mange team å diagnostisere dette problemet fordi Kubernetes pods ofte avslutter, noe som gjør det vanskelig å fortelle hvilke som ble holdt for lenge. Å løse dette problemet er sammensatt fordi nodedrenering i Kubernetes må konfigureres på en måte for å jobbe for miljøet ditt.

Hvis du ser fra konfigurasjonsfilen at alle podene på en enkelt node er i tilstanden "avslutning", kan dette være problemet.

Hvordan fikse dette problemet?

Følgende måter kan hjelpe deg med å løse problemet enkelt.

Slette poden

Først må du prøve å slette pod manuelt ved å gjøre følgende trinn:

  1. KUBECTL DELETE -WAIT = FALSE POD
  2. KUBECTL DELETE -GRACE -PERIOD = 1 POD
  3. Kubectl Delete -Grace -Period = 0 -Force Pod

Imidlertid er det liten sjanse for at manuell fjerning av poden fra navneområdet vil bidra til å løse problemet, selv om du gir det nøyaktige navnet på poden du ønsker å slette.

I så fall kan problemet være at poden ikke slutter fordi en viss prosess ikke reagerer på et signal. Så du må kommandere pod som skal fjernes kraftig ved å bruke følgende kommando:

> KUBECTL DELETE POD [NAME_OF_THE_POD] -GRACE -PERIOD = 0 -FORCE KUBECTL DELETE POD [NAME_OF_THE_POD] -GRACEPERIOD = 0 -Force -n [name_of_the_namespace]

Sørg for å legge til navnet på pod i kommandoen hvis den er i et dedikert navneområde.

Fjerne finalisatorene

Hvis det ikke fungerer med å fjerne podet, kan hovedproblemet være med selve poden. Et vanlig problem med pod er manglende evne til finaliserende i den som skal fullføres, noe som kan være hovedspørsmålet som får poden til å sitte fast i en avsluttende tilstand. Så du trenger først for å se etter finisatorene i poden ved å få podens konfigurasjon:

> Kubectl Get Pod -n [namespace] -p [name_of_the_pod] -o yaml> /tmp /config_file.tekst

Søk deretter under metadata etter finaliseringsdelen. Hvis det blir funnet noen finaliserende, må du fjerne dem ved å gjøre følgende:

> kubectl patch pod [name_of_the_pod] -p '"metadata": "finalisers": null'

Start kubelet på nytt

Hvis de nevnte løsningene ikke løser dette problemet, bør du prøve å starte Kubelet på nytt. Imidlertid kan det hende du må involvere en administrator hvis du ikke har tillatelse. Hvis du har tilgang, bør du starte Kubelet -prosessen på nytt ved å sshing inn i noden.

Hvordan unngå at belgene blir sittende fast i fremtiden?

Dette er noen trinn du kan ta for å sikre at dette problemet ikke oppstår i utgangspunktet:

  • Kontroller podene dine først for å se om de fungerer ordentlig før de distribuerer dem.
  • Forsikre deg om at du har tilstrekkelige ressurser. Mangel på ressurser kan føre til at belgene begynner.
  • Forsikre deg om at belgene dine ikke bruker for mange ressurser.
  • Sørg for å holde Kubernetes -klyngen oppdatert for å unngå problemer i fremtiden.
  • Kontroller hele tiden om det er noen problemer med konfigurasjonen eller koden til podene dine.

Konklusjon

Problemene som kan oppstå som et resultat av at en pod blir sittende fast i avsluttende tilstand, gjør det verdt å ta ekstra skritt for å sikre at det for eksempel ikke kan være et problem med å sikre at det ikke kan være et problem med selve problemer med selve pod med konfigurasjonen av poden som mest sannsynlig vil føre til at poden sitter fast i avsluttende tilstand. Du bør også være ekstra forsiktig med å unngå ting som kan føre til at dette problemet, for eksempel mangel på ressurser eller Kubernetes -klyngen ikke er oppdatert. Hvis dette problemet fremdeles oppstår til tross for at de har tatt de nødvendige skritt for å unngå det, vil det første som må gjøres å være for å finne ut årsaken til dette problemet og bruke en løsning deretter.