Kā iestatīt dažādas Kubernetes restartēšanas politikas

Ka Iestatit Dazadas Kubernetes Restartesanas Politikas



Šajā rakstā mēs īpaši runāsim par dažādām Kubernetes restartēšanas politikām. Vispirms apspriedīsim dažādās politikas, kas tiek izmantotas, kad Kubernetes ir jārestartē. Varat izmantot šīs politikas, lai apturētu noteiktas darba slodzes izvietošanu klasterī. Lai gan stingru standartu noteikšana klasterī parasti tiek veikta, lai nodrošinātu atbilstību, klasteru administratoriem ir jāievēro arī vairākas ieteiktās labākās prakses.

Kas ir Kubernetes restartēšanas politika?

Katrs Kubernetes pods atbilst noteiktam dzīves ciklam. Tas sākas gaidīšanas stadijā un, ja viens vai vairāki primārie konteineri ir veiksmīgi palaisti, pāriet uz darbības posmu. Atkarībā no tā, vai podā esošie konteineri ir veiksmīgi vai neveiksmīgi, process pēc tam pāriet uz fāzi “izdevās” vai “neizdevās”.







Lai restartētu politiku lietoto konteineru līmenī, var izmantot trīs iespējas:



Vienmēr

Katru reizi, kad konteinera darbība tiek pārtraukta, Kubernetes izveido jaunu, jo podam vienmēr jābūt aktīvam.



Neveiksmes gadījumā

Ja konteiners iziet ar atgriešanas kodu, kas nav 0, tas tiek restartēts tikai vienu reizi. Restartēšana nav nepieciešama konteineriem, kas atgriež 0 (veiksmīgi).





Nekad

Konteineru neizdevās restartēt.

Tagad nākamajā sadaļā mēs apspriedīsim, kā jūs varat restartēt pod.



Kā restartēt Pod Kubernetes?

Lai restartētu Kubernetes pod, izdodiet komandas, izmantojot kubectl rīku. Tas izveidos savienojumu ar KubeAPI serveri. Izpētīsim pieejamās iespējas:

Konteinera restartēšana podā

Pāksts var saturēt vairākus konteinerus. No otras puses, jūs būtībā izveidojat savienojumu ar primāro konteineru podā, kad izveidojat savienojumu ar to. Varat izveidot savienojumu ar katru definēto konteineru gadījumā, ja esat definējis vairāk nekā vienu.

Tālāk varat skatīt vairāku konteineru komplekta specifikācijas piemēru.


Tas apraksta koplietotu sējumu un divus konteinerus. HTML failu apkalpos NGINX konteiners, un katru sekundi Ubuntu konteiners HTML failam pievienos datuma zīmogu.

Tā kā jūs nenorādījāt, ar kuru konteineru izveidot savienojumu, tas automātiski izvēlēsies pirmo (NGINX), kad mēģināsit izveidot savienojumu ar šo aplikumu. Ekrānuzņēmums ir pievienots zemāk:


Tagad varat mēģināt pārtraukt PID 1 procesu pašlaik aktīvajā konteinerā. Lai to paveiktu, palaidiet šādas komandas kā root:


Varat arī izmantot tālāk aprakstīto kubectl rīku:


Saskaņā ar pod specifikāciju K8s tagad mēģinās restartēt iznīcināto konteineru. Šim nolūkam komanda “aprakstīt” tiek izmantota šādi:


Šeit ir iepriekš minētās komandas rezultāts:


Pašreizējais stāvoklis “iet”, savukārt iepriekšējais stāvoklis ir “izbeigts”. Tas nozīmē, ka konteiners tika restartēts saskaņā ar šo. Tomēr ne visi konteineri var piekļūt saknes akreditācijas datiem. Tāpēc šī metode var nebūt ļoti noderīga.

Pod restartēšana, mērogojot

Vienkāršākais veids, kā to restartēt, ir mērogot podziņas reprodukciju skaitu līdz 0 un pēc tam mērogot līdz 1. Tā vietā jums ir jāveido izvietošana, jo mērogošanas komandu nevar izmantot apvidos. Šeit ir vienkāršs veids, kā to paveikt:


Mērogojiet līdz 0 un pēc tam uz 1. To darot, pods tiks pārtraukts un pēc tam atkārtoti izvietots klasterī:


Kā redzams šajā attēlā, kopijas ir iestatītas uz 1.


Lai skatītu izvietošanas informāciju, tagad esam izmantojuši “kubectl get izvietošanu”. Tālāk ir norādīts gan komandas, gan rezultātu saraksts:

Pod restartēšana, to izdzēšot un atkārtoti izvietojot

Izmantojot komandu “kubectl delete”, varat izdzēst podziņu un pēc tam to atkārtoti izvietot. Tomēr šī pieeja ir diezgan traucējoša, tāpēc tā nav ieteicama.

Pod restartēšana, izmantojot izlaišanu

Lai restartētu aplikumu, izmantojot iepriekš aprakstīto veidu, vai nu ir jāiznīcina esošais pods un pēc tam jāizveido jauns, vai arī jāsamazina kopiju skaits uz leju un pēc tam uz augšu. Izmantojot Kubernetes versiju 1.15, varat restartēt izvietošanu nepārtraukti. Šī ir ieteicamā podziņa restartēšanas procedūra. Lai sāktu, vienkārši ievadiet šo komandu:


Tagad, ja sekojat izvietošanas statusam citā terminālā, jūs pamanīsit šādu notikumu plūsmu:


Ja tas ir veselīgs, tas samazinās iepriekšējās izvietošanas kopijas apjomu un izveidos jaunu aplikācijas kopiju. Rezultāts ir tāds pats, izņemot šo pieeju, pamatā esošo orķestrēšanu veica Kubernetes.

Kā Kubernetes Pods var restartēt dažādos veidos?

Vispirms sāksim ar doka konteineru. Ar šādu komandu Docker konteinerus var restartēt:

> docker restartējiet konteinera_id

Bet Kubernetes nav salīdzināmas komandas, lai restartētu podi, it īpaši, ja nav norādīts YAML fails. Kā alternatīvu varat restartēt Kubernetes podi, izmantojot kubectl komandas. Ir uzskaitītas šādas komandas:

Kubectl Set Env komanda

Viena no metodēm ir izmantot kubectl mēroga komandu. Tādējādi tiks mainīts to podkopas kopiju skaits, kuras ir jārestartē. Tālāk ir sniegts komandas piemērs, kā podā iestatīt divas kopijas:

> kubectl mēroga izvietošana pirmā izvietošana - replikas = 2

Izlaišanas Restartēšanas komanda

Šeit mēs parādīsim, kā izmantot izlaišanas restartēšanas komandu, lai restartētu Kubernetes podi:

> kubectl izlaišanas restartēšanas izvietošana pirmā izvietošana -n demo-vārdtelpa

Kontrolierim tiek likts iznīcināt katru podiņu atsevišķi ar komandu. Pēc tam tas mērogo jaunas pākstis, izmantojot ReplicaSet. Šis process turpinās, kamēr kontrolleris atsāk darbību, kamēr katrs jaunais pods ir jaunāks par katru pašreizējo apkopi.

Komanda Dzēst Pod

Šajā sadaļā tiks apskatīts, kā izmantot noņemšanas komandu, lai restartētu Kubernetes podi. Varat pamanīt, ka mēs izmantojām nākamo komandu, lai atbrīvotos no pod API objekta šajā attēlā:

. > kubectl dzēst pod first-pod -n demo_namespace

Paredzētais ir pretrunā ar pod objekta dzēšanu, jo Kubernetes API ir deklaratīva. Lai saglabātu konsekvenci ar paredzēto, pāksts tiek izveidots no jauna.

Vienu podziņu var restartēt vienlaikus, izmantojot iepriekšējo komandu. Skatiet pievienoto komandu, lai restartētu vairākus podiņus:

> kubectl dzēst replicaset pods-multiple-n demo_namespace

Iepriekš minētā komanda restartē katru aplikumu, dzēšot visu ReplicaSet un pēc tam izveidojot to no jauna.

Secinājums

Šajā ziņojumā tika sniegta informācija par dažādām Kubernetes restartēšanas politikām. Mēs ilustrējām katru posmu ar piemēru piemēru palīdzību. Izmēģiniet arī šīs komandas un skatiet, kādu izvadi tās ģenerē.