Vi vil snakke spesifikt om de forskjellige Kubernetes omstart -retningslinjene i denne artikkelen. La oss først diskutere de forskjellige retningslinjene som brukes når Kubernetes må startes på nytt. Du kan bruke disse retningslinjene for å stoppe en viss arbeidsmengde fra å bli utplassert i klyngen. Selv om det pålegger strenge standarder i klyngen vanligvis gjøres for å sikre etterlevelse, bør klyngeadministratorer også følge flere beste praksis som er foreslått.
Hva er Kubernetes Restart Policy?
Hver Kubernetes pod fester seg til en bestemt livssyklus. Det begynner i "ventende" -stadiet, og hvis en eller flere av de primære containerne ble lansert med hell, overganger til "løpende" -stadiet. Avhengig av om containerne i poden lykkes eller mislykkes, går prosessen videre til "etterfølgende" eller "mislykket" fase.
For å starte policyen på nytt på nivået av de anvendte containerne, kan tre alternativer brukes:
Alltid
Hver gang en container avsluttes, produserer Kubernetes en ny siden poden til enhver tid må være aktiv.
Onfailure
Hvis containeren kommer ut med en annen returkode enn 0, starter den bare en gang på nytt. Omstart er ikke nødvendig for containere som returnerer 0 (suksess).
Aldri
Containeren klarte ikke å starte på nytt.
Nå, i det følgende avsnittet, vil vi diskutere hvordan du kan starte en pod på nytt.
Hvordan starte en pod på nytt i Kubernetes?
For å starte en Kubernetes -pod på nytt, utsteder kommandoer ved hjelp av KUBECTL -verktøyet. Den vil koble seg til Kubeapi -serveren. La oss utforske de tilgjengelige alternativene:
Start en beholder på nytt i en pod
En pod kan inneholde flere containere. På den annen side kobler du i hovedsak til primærbeholderen i en pod når du kobler til den. Du kan koble til hver beholder som du har definert i en sak hvis du har definert mer enn en.
Du kan se under et eksempel på flere container POD-spesifikasjoner:
Dette beskriver et delt volum og to containere. HTML -filen vil bli servert av Nginx -containeren, og hvert sekund vil Ubuntu -containeren legge til et datostempel i HTML -filen.
Siden du ikke spesifiserte hvilken beholder som skal kobles til, vil den automatisk velge den første (Nginx) når du prøver å koble deg til den pod. Skjermbildet er vedlagt nedenfor:
Du kan nå prøve å avslutte PID 1 -prosessen inne i den for øyeblikket aktive beholderen. Kjør følgende kommandoer som root for å oppnå dette:
Du kan også benytte deg av KUBECTL -verktøyet beskrevet nedenfor:
I følge POD -spesifikasjonen vil K8s nå forsøke å starte den ødelagte beholderen på nytt. For det brukes "beskriv" -kommandoen som følger:
Her er resultatet av kommandoen ovenfor:
Den nåværende staten "går", mens den forrige staten ble "avsluttet.”Dette betyr at beholderen ble startet på nytt, i henhold til dette. Imidlertid kan ikke alle containere få tilgang til rotopplysninger. Dette er grunnen til at denne metoden kanskje ikke er veldig nyttig.
Start en pod på nytt ved å skalere
Å skalere en pods replikatelling til 0 og deretter skalere den opp til 1 er den enkleste måten å starte den på nytt. Du må i stedet konstruere en distribusjon fordi skala -kommandoen ikke kan brukes på belg. Her er en enkel måte å oppnå det:
Skala til 0 og deretter til 1 etter det. Ved å gjøre dette blir pod avsluttet og deretter omdisponert til klyngen:
Replikkene er satt til 1 som du kan se i dette bildet.
For å se distribusjonsdetaljene, har vi nå brukt “Kubectl Get Deployments.”Følgende er en liste over både kommandoen og resultatet:
Start en pod på nytt ved å slette den og omdisponere den
Ved hjelp av “Kubectl Delete” -kommandoen kan du slette en pod og deretter omdisponere den. Imidlertid er denne tilnærmingen ganske forstyrrende, derfor anbefales den ikke.
Start en pod på nytt med utrulling
For å starte en pod på nytt ved å bruke måten beskrevet ovenfor, må du enten ødelegge den eksisterende pod og deretter opprette en ny, eller skalere replikaen teller ned og deretter opp. Med Kubernetes versjon 1.15, kan du starte en distribusjon på nytt på en rullende måte. Dette er den foreslåtte prosedyren for å starte en pod på nytt. Bare skriv inn følgende kommando for å komme i gang:
Hvis du holder øye med distribusjonsstatusen på en annen terminal, vil du merke strømmen av hendelser som følger:
Hvis det er sunt, vil den skalere ned den forrige kopien av utplasseringen og snurre opp en ny kopi av POD. Utfallet er det samme, bortsett fra i denne tilnærmingen ble den underliggende orkestrasjonen håndtert av Kubernetes.
Hvordan kan Kubernetes pods startes på nytt på forskjellige måter?
La oss først begynne med Docker -beholderen. Med følgende kommando kan Docker -containere startes på nytt:
> Docker Start Container_ID
Men i Kubernetes er det ingen sammenlignbare kommandoer om å starte belgene på nytt, spesielt hvis det ikke er noen spesifisert YAML -fil. Som et alternativ kan du starte Kubernetes Pods på nytt med Kubectl -kommandoer. Følgende kommandoer er oppført:
Kubectl Set Env -kommandoen
En metode er å bruke kommandoen Kubectl Scale. Dette vil endre antall kopier av poden som må startes på nytt. Nedenfor er et eksempel -kommando for hvordan du angir kopiene i poden til å være to:
> KUBECTL skala distribusjon Først-distribusjon-Replicas = 2
ROLUT RESTART -kommandoen
Her vil vi demonstrere hvordan du bruker ROLUT RESTART -kommandoen for å starte Kubernetes Pods på nytt:
> KUBECTL RULTOUT RESTART DEPLOBLATION FIRST-DEPLOYMENT-NEMO-NAMEPACE
Kontrolleren får beskjed om å utrydde hver pod individuelt etter kommandoen. Den skalerer deretter opp nye belg ved å bruke replikasetten. Inntil hver nye pod er nyere enn hver nåværende pod når kontrolleren gjenopptas, fortsetter denne prosessen.
Delete POD -kommandoen
Denne delen vil gå over hvordan du bruker Fjern -kommandoen for å starte Kubernetes Pods på nytt. Du kan legge merke til at vi brukte neste kommando for å bli kvitt POD API -objektet i dette bildet:
.> Kubectl Delete Pod First -Pod -n Demo_namespace
Den forventede er motsagt ved å slette POD -objektet fordi Kubernetes API er erklærende. For å holde konsistensen med den forventede, blir poden derfor gjenskapt.
En pod kan startes på nytt om gangen ved hjelp av forrige kommando. Se den vedlagte kommandoen for å starte flere belg på nytt:
> Kubectl Delete Replicaset Pods-Multiple-n Demo_namespace
Den nevnte kommandoen starter hver pod på nytt ved å slette hele replikasetten av pods og deretter lage den fra bunnen av.
Konklusjon
Dette innlegget ga informasjon om de forskjellige Kubernetes omstart -retningslinjene. Vi illustrerte hvert trinn ved hjelp av prøveeksempler. Prøv også ut disse kommandoene og se hvilken utgang de genererer.