Kako nastaviti drugačna pravila za ponovni zagon Kubernetes

Kako Nastaviti Drugacna Pravila Za Ponovni Zagon Kubernetes



V tem članku bomo govorili posebej o različnih pravilnikih o ponovnem zagonu Kubernetes. Najprej se pogovorimo o različnih pravilnikih, ki se uporabljajo, ko je treba znova zagnati Kubernetes. S temi pravilniki lahko preprečite razmestitev določene delovne obremenitve v gručo. Medtem ko se uvedba strogih standardov v gruči običajno izvede za zagotovitev skladnosti, morajo skrbniki gruče upoštevati tudi več predlaganih najboljših praks.

Kaj je pravilnik o ponovnem zagonu Kubernetes?

Vsak pod Kubernetes se drži določenega življenjskega cikla. Začne se v fazi »v teku« in, če je eden ali več primarnih vsebnikov uspešno zagnanih, preide v fazo »v teku«. Glede na to, ali vsebniki v podu uspejo ali ne, se postopek nato premakne v fazo »uspelo« ali »neuspešno«.







Če želite znova zagnati pravilnik na ravni uporabljenih vsebnikov, lahko uporabite tri možnosti:



Nenehno

Vsakič, ko se vsebnik zaključi, Kubernetes ustvari novega, saj mora biti pod ves čas aktiven.



OnFailure

Če vsebnik zapusti s povratno kodo, ki ni 0, se znova zažene samo enkrat. Ponovni zagon ni potreben za vsebnike, ki vrnejo 0 (uspeh).





Nikoli

Vsebnika ni bilo mogoče znova zagnati.

Zdaj bomo v naslednjem razdelku razpravljali o tem, kako lahko znova zaženete pod.



Kako znova zagnati pod v Kubernetesu?

Če želite znova zagnati pod Kubernetes, izdajte ukaze z orodjem kubectl. Povezal se bo s strežnikom KubeAPI. Raziščimo razpoložljive možnosti:

Ponovni zagon vsebnika znotraj Poda

Strok lahko vsebuje več posod. Po drugi strani pa se v bistvu povežete s primarnim vsebnikom znotraj sklopa, ko se povežete z njim. Lahko se povežete z vsakim vsebnikom, ki ste ga definirali v primeru, če ste definirali več kot enega.

Spodaj si lahko ogledate primer specifikacije sklopa z več vsebniki:


To opisuje skupni volumen in dva vsebnika. Datoteko HTML bo stregel vsebnik NGINX in vsako sekundo bo vsebnik Ubuntu v datoteko HTML dodal datumski žig.

Ker niste določili, s katerim vsebnikom se želite povezati, bo samodejno izbral prvega (NGINX), ko se boste poskušali povezati s tem sklopom. Posnetek zaslona je priložen spodaj:


Zdaj lahko poskusite prekiniti proces PID 1 znotraj trenutno aktivnega vsebnika. Zaženite naslednje ukaze kot root, da to dosežete:


Uporabite lahko tudi orodje kubectl, opisano spodaj:


V skladu s specifikacijo stroka bo K8 zdaj poskušal znova zagnati uničeno posodo. Za to se ukaz »describe« uporablja na naslednji način:


Tukaj je rezultat zgornjega ukaza:


Sedanje stanje 'gre', medtem ko je bilo prejšnje stanje 'končano'. To pomeni, da je bil vsebnik v skladu s tem znova zagnan. Vendar pa vsi vsebniki ne morejo dostopati do korenskih poverilnic. Zato ta metoda morda ni zelo uporabna.

Ponovni zagon Poda s skaliranjem

Najenostavnejši način za ponovni zagon je povečanje števila replik sklopa na 0 in nato povečanje na 1. Namesto tega morate sestaviti razmestitev, ker ukaza scale ni mogoče uporabiti na podih. Tukaj je preprost način, da to dosežete:


Povečajte na 0 in nato na 1. S tem bo sklop prekinjen in nato ponovno razporejen v gručo:


Replike so nastavljene na 1, kot lahko vidite na tej sliki.


Za ogled podrobnosti o uvajanju smo zdaj uporabili »kubectl get deployments«. Sledi seznam ukaza in rezultata:

Ponovni zagon Poda tako, da ga izbrišete in znova namestite

Z ukazom »kubectl delete« lahko izbrišete pod in ga nato znova razporedite. Vendar je ta pristop precej moteč, zato ga odsvetujemo.

Ponovni zagon Poda z uporabo Rollout

Če želite znova zagnati sklop na zgoraj opisani način, morate bodisi uničiti obstoječi sklop in nato ustvariti novega ali zmanjšati odštevanje replik navzdol in nato navzgor. Z različico Kubernetes 1.15 lahko znova zaženete uvajanje na tekoči način. To je predlagani postopek za ponovni zagon sklopa. Za začetek preprosto vnesite naslednji ukaz:


Zdaj, če spremljate stanje uvajanja na drugem terminalu, boste opazili naslednji tok dogodkov:


Če je zdrava, bo zmanjšala prejšnjo repliko razporeditve in zavrtela novo repliko sklopa. Rezultat je enak, le da je pri tem pristopu za osnovno orkestracijo poskrbel Kubernetes.

Kako je mogoče Kubernetes Pods znova zagnati na različne načine?

Začnimo najprej s priklopnim vsebnikom. Z naslednjim ukazom lahko vsebnike Docker znova zaženete:

> docker znova zaženi container_id

Toda v Kubernetesu ni primerljivega ukaza za ponovni zagon podov, še posebej, če ni navedene datoteke YAML. Namesto tega lahko znova zaženete Kubernetes pods z ukazi kubectl. Navedeni so naslednji ukazi:

Ukaz Kubectl Set Env

Eden od načinov je uporaba ukaza kubectl scale. To bo spremenilo število replik sklopa, ki jih je treba znova zagnati. Spodaj je primer ukaza, kako nastaviti dve repliki v bloku:

> kubectl scale deployment prva uvedba -- replike = 2

Rollout Restart Command

Tukaj bomo prikazali, kako uporabiti ukaz rollout restart za ponovni zagon podov Kubernetes:

> kubectl rollout ponovni zagon uvajanja prva uvedba -n demo-imenski prostor

Krmilniku se pove, naj z ukazom iztrebi vsako stroko posebej. Nato z uporabo ReplicaSet poveča nove sklope. Ta postopek se nadaljuje, dokler ni vsak nov sklop novejši od vsakega trenutnega sklopa, ko se krmilnik nadaljuje.

Ukaz Delete Pod

V tem razdelku bo opisano, kako uporabiti ukaz za odstranitev za ponovni zagon podov Kubernetes. Opazite lahko, da smo uporabili naslednji ukaz, da se znebimo predmeta API pod na tej sliki:

. > kubectl izbriši pod prvi-pod -n demo_namespace

Pričakovano je v nasprotju z brisanjem objekta pod, ker je Kubernetes API deklarativen. Da bi ohranili doslednost s pričakovanim, je pod ponovno ustvarjen.

S prejšnjim ukazom je mogoče znova zagnati en pod. Glejte priloženi ukaz za ponovni zagon več sklopov:

> kubectl izbriši replicaset pods-multiple-n demo_namespace

Zgoraj omenjeni ukaz znova zažene vsak pod, tako da izbriše celoten ReplicaSet podov in ga nato ustvari iz nič.

Zaključek

Ta objava je vsebovala informacije o različnih pravilnikih o ponovnem zagonu Kubernetes. Vsako stopnjo smo ponazorili s pomočjo vzorčnih primerov. Preizkusite tudi te ukaze in si oglejte, kakšen rezultat ustvarijo.