Paano Magtakda ng Iba't ibang Patakaran sa Pag-restart ng Kubernetes

Paano Magtakda Ng Iba T Ibang Patakaran Sa Pag Restart Ng Kubernetes



Partikular na pag-uusapan natin ang tungkol sa iba't ibang mga patakaran sa pag-restart ng Kubernetes sa artikulong ito. Talakayin muna natin ang iba't ibang patakarang ginagamit kapag kailangang i-restart ang Kubernetes. Maaari mong gamitin ang Mga Patakaran na ito upang ihinto ang isang partikular na workload mula sa pag-deploy sa cluster. Bagama't karaniwang ginagawa ang pagpapataw ng mga mahigpit na pamantayan sa cluster upang matiyak ang pagsunod, dapat ding sundin ng mga administrator ng cluster ang ilang pinakamahuhusay na kagawian na iminungkahi.

Ano ang Patakaran sa Pag-restart ng Kubernetes?

Ang bawat Kubernetes pod ay sumusunod sa isang partikular na lifecycle. Nagsisimula ito sa yugtong 'nakabinbin' at, kung matagumpay na nailunsad ang isa o higit pa sa mga pangunahing lalagyan, lumipat sa yugto ng 'tumatakbo'. Depende sa kung ang mga container sa pod ay magtagumpay o mabigo, ang proseso ay magpapatuloy sa 'nagtagumpay' o 'nabigo' na yugto.







Upang i-restart ang patakaran sa antas ng mga container na inilapat, tatlong opsyon ang maaaring gamitin:



Laging

Sa tuwing magwawakas ang isang container, gumagawa ang Kubernetes ng bago dahil kailangang maging aktibo ang pod sa lahat ng oras.



OnFailure

Kung lalabas ang container na may return code maliban sa 0, isang beses lang itong magre-restart. Hindi kailangan ang pag-restart para sa mga container na nagbabalik ng 0 (tagumpay).





Hindi kailanman

Nabigong mag-restart ang container.

Ngayon, sa susunod na seksyon, tatalakayin natin kung paano ka makakapag-restart ng pod.



Paano I-restart ang isang Pod sa Kubernetes?

Para mag-restart ng Kubernetes pod, mag-isyu ng mga command gamit ang kubectl tool. Makakakonekta ito sa server ng KubeAPI. I-explore natin ang mga available na opsyon:

Pag-restart ng Container sa loob ng Pod

Ang isang pod ay maaaring maglaman ng ilang lalagyan. Sa kabilang banda, mahalagang kumonekta ka sa pangunahing lalagyan sa loob ng pod kapag kumonekta ka dito. Maaari kang kumonekta sa bawat container na tinukoy mo sa isang kaso kung nakatukoy ka ng higit sa isa.

Maaari mong makita sa ibaba ang isang halimbawa ng detalye ng multi-container pod:


Inilalarawan nito ang isang nakabahaging volume at dalawang lalagyan. Ang HTML file ay ihahatid ng NGINX container at bawat segundo ang Ubuntu container ay magdaragdag ng date stamp sa HTML file.

Dahil hindi mo tinukoy kung aling container ang ikokonekta, awtomatiko nitong pipiliin ang una (NGINX) kapag sinubukan mong kumonekta sa pod na iyon. Ang screenshot ay naka-attach sa ibaba:


Maaari mo na ngayong subukang wakasan ang proseso ng PID 1 sa loob ng kasalukuyang aktibong container. Patakbuhin ang sumusunod na mga utos bilang ugat upang magawa ito:


Maaari mo ring gamitin ang kubectl tool na inilarawan sa ibaba:


Ayon sa detalye ng pod, susubukan na ngayon ng K8s na i-restart ang nasirang lalagyan. Para diyan, ang utos na 'ilarawan' ay ginagamit tulad ng sumusunod:


Narito ang resulta ng utos sa itaas:


Ang kasalukuyang estado ay 'pupunta,' habang ang nakaraang estado ay 'tinapos.' Nangangahulugan ito na ang lalagyan ay na-restart, ayon dito. Gayunpaman, hindi lahat ng container ay makaka-access ng mga root credential. Ito ang dahilan kung bakit maaaring hindi masyadong kapaki-pakinabang ang pamamaraang ito.

Pagsisimula muli ng Pod sa pamamagitan ng Pag-scale

Ang pag-scale ng replica count ng pod sa 0 at pagkatapos ay pag-scale nito hanggang 1 ang pinakasimpleng paraan para i-restart ito. Sa halip, dapat kang bumuo ng Deployment dahil hindi magagamit ang scale command sa mga pod. Narito ang isang madaling paraan upang magawa iyon:


I-scale sa 0 at pagkatapos ay sa 1 pagkatapos noon. Sa paggawa nito, wawakasan ang pod at pagkatapos ay i-redeploy sa cluster:


Ang mga replika ay nakatakda sa 1 gaya ng makikita mo sa larawang ito.


Upang tingnan ang mga detalye ng deployment, ginamit na namin ngayon ang 'kubectl get deployments.' Ang sumusunod ay isang listahan ng parehong utos at ang resulta:

Pag-restart ng Pod sa pamamagitan ng Pagtanggal at Pag-redeploy nito

Gamit ang command na 'kubectl delete', maaari mong tanggalin ang isang pod at pagkatapos ay i-redeploy ito. Gayunpaman, ang pamamaraang ito ay medyo nakakagambala, kaya hindi ito ipinapayo.

Pag-restart ng Pod Gamit ang Rollout

Upang i-restart ang isang pod gamit ang paraang inilarawan sa itaas, dapat mong sirain ang kasalukuyang pod at pagkatapos ay gumawa ng bago, o sukatin ang replica count down at pagkatapos ay pataas. Gamit ang bersyon 1.15 ng Kubernetes, maaari mong i-restart ang isang Deployment sa patuloy na paraan. Ito ang iminungkahing pamamaraan para sa pag-restart ng pod. Ipasok lamang ang sumusunod na command upang makapagsimula:


Ngayon, kung babantayan mo ang status ng deployment sa ibang terminal, mapapansin mo ang daloy ng mga kaganapan tulad ng sumusunod:


Kung ito ay malusog, babawasan nito ang dating replica ng Deployment at paikutin ang isang bagong replica ng pod. Ang kinalabasan ay pareho, maliban sa diskarteng ito, ang pinagbabatayan na orkestra ay pinangangasiwaan ng Kubernetes.

Paano Mare-restart ang Kubernetes Pods sa Iba't ibang Paraan?

Magsimula muna tayo sa lalagyan ng docker. Gamit ang sumusunod na utos, maaaring i-restart ang mga container ng Docker:

> i-restart ng docker ang container_id

Ngunit sa Kubernetes, walang maihahambing na command upang i-restart ang mga pod, lalo na kung walang tinukoy na YAML file. Bilang alternatibo, maaari mong i-restart ang mga Kubernetes pod gamit ang mga kubectl command. Ang mga sumusunod na utos ay nakalista:

Ang Kubectl Set Env Command

Ang isang paraan ay ang paggamit ng kubectl scale command. Babaguhin nito ang bilang ng mga replika ng pod na kailangang i-restart. Nasa ibaba ang isang halimbawang utos kung paano itakda ang mga replika sa pod na maging dalawa:

> unang-deployment ng kubectl scale deployment --mga replika = 2

Rollout Restart Command

Dito, ipapakita namin kung paano gamitin ang rollout restart command para i-restart ang mga Kubernetes pod:

> kubectl rollout restart deployment unang-deployment -n demo-namespace

Sinabihan ang controller na puksain ang bawat pod nang paisa-isa sa pamamagitan ng utos. Pagkatapos ay pinapalaki nito ang mga bagong pod gamit ang ReplicaSet. Hanggang sa ang bawat bagong pod ay mas bago kaysa sa bawat kasalukuyang pod kapag nagpatuloy ang controller, magpapatuloy ang prosesong ito.

Ang Delete Pod Command

Tatalakayin ng seksyong ito kung paano gamitin ang command na alisin upang i-restart ang mga pod ng Kubernetes. Maaari mong mapansin na ginamit namin ang susunod na utos upang alisin ang pod API object sa larawang ito:

. > kubectl tanggalin ang pod first-pod -n demo_namespace

Ang inaasahan ay sinasalungat sa pamamagitan ng pagtanggal sa pod object dahil ang Kubernetes API ay deklaratibo. Upang mapanatili ang pare-pareho sa inaasahang isa, ang pod ay samakatuwid ay muling nilikha.

Ang isang pod ay maaaring i-restart sa isang pagkakataon gamit ang nakaraang command. Sumangguni sa nakalakip na utos upang i-restart ang ilang pod:

> kubectl tanggalin ang replicaset pods-multiple-n demo_namespace

Ang nabanggit na command ay nagre-restart sa bawat pod sa pamamagitan ng pagtanggal sa buong ReplicaSet ng mga pod at pagkatapos ay ginagawa ito mula sa simula.

Konklusyon

Ang post na ito ay nagbigay ng impormasyon sa iba't ibang mga patakaran sa pag-restart ng Kubernetes. Inilarawan namin ang bawat yugto sa tulong ng mga halimbawang halimbawa. Gayundin, subukan ang mga utos na ito at tingnan kung anong output ang nabuo ng mga ito.