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:
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.tekstSø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:
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.