SvarÄ«gs punkts sadalÄ«to sistÄmu darbÄ«bÄ ir kļūmju apstrÄde. Kubernetes palÄ«dz ar to, izmantojot kontrolierus, kas pÄrrauga jÅ«su sistÄmas stÄvokli un restartÄ pakalpojumus, kas ir pÄrstÄjuÅ”i darboties. TomÄr Kubernetes var piespiedu kÄrtÄ apturÄt jÅ«su lietojumprogrammas, lai nodroÅ”inÄtu sistÄmas vispÄrÄjo stÄvokli. Å ajÄ sÄrijÄ mÄs apskatÄ«sim, kÄ jÅ«s varat palÄ«dzÄt Kubernetes veikt savu darbu efektÄ«vÄk un samazinÄt lietojumprogrammu dÄ«kstÄves laiku.
Pirms konteineriem lielÄkÄ daļa lietojumprogrammu darbojÄs virtuÄlÄs vai fiziskÄs iekÄrtÄs. Ja lietojumprogramma avarÄja vai sastinga, bija nepiecieÅ”ams ilgs laiks, lai atceltu notiekoÅ”o uzdevumu un atkÄrtoti ielÄdÄtu programmu. SliktÄkajÄ gadÄ«jumÄ kÄdam Ŕī problÄma bija jÄatrisina manuÄli naktÄ«, visnepiemÄrotÄkajÄs stundÄs. Ja kÄdu svarÄ«gu uzdevumu pildÄ«ja tikai 1-2 strÄdÄjoÅ”as maŔīnas, tad Å”Äds traucÄjums bija pilnÄ«gi nepieÅemams.
TÄpÄc manuÄlas atsÄknÄÅ”anas vietÄ viÅi sÄka izmantot procesa lÄ«meÅa uzraudzÄ«bu, lai neparastas darbÄ«bas pÄrtraukÅ”anas gadÄ«jumÄ automÄtiski restartÄtu lietojumprogrammu. Ja programma neizdodas, uzraudzÄ«bas process uztver izejas kodu un restartÄ serveri. LÄ«dz ar tÄdu sistÄmu kÄ Kubernetes parÄdÄ«Å”anos Å”Äda veida reakcija uz sistÄmas kļūmÄm tika vienkÄrÅ”i integrÄta infrastruktÅ«rÄ.
Kubernetes izmanto notikumu cilpu āNovÄro atŔķirÄ«bu ā rÄ«kojies, lai nodroÅ”inÄtu, ka resursi paliek veseli, kad tie pÄrvietojas no konteineriem uz paÅ”iem mezgliem.
Tas nozÄ«mÄ, ka jums vairs nav manuÄli jÄveic procesa uzraudzÄ«ba. Ja resursam neizdodas veikt veselÄ«bas pÄrbaudi, Kubernetes vienkÄrÅ”i automÄtiski nodroÅ”inÄs to ar nomaiÅu. TomÄr Kubernetes dara daudz vairÄk, nekÄ tikai pÄrrauga jÅ«su lietojumprogrammas kļūmes. Tas var izveidot vairÄkas lietojumprogrammas kopijas, lai tÄs darbotos vairÄkÄs iekÄrtÄs, atjauninÄtu lietojumprogrammu vai vienlaikus palaistu vairÄkas lietojumprogrammas versijas.
TÄpÄc ir daudz iemeslu, kÄpÄc Kubernetes var pÄrtraukt pilnÄ«gi veselÄ«gu konteineru. PiemÄram, ja jauninÄsit izvietoÅ”anu, Kubernetes lÄnÄm apturÄs vecos aplikÄcijas, vienlaikus startÄjot jaunas. Ja izslÄgsit mezglu, Kubernetes pÄrtrauks darboties Å”ajÄ mezglÄ. Visbeidzot, ja mezglam beigsies resursi, Kubernetes izslÄgs visus blokus, lai atbrÄ«votu Å”os resursus.
TÄpÄc ir ļoti svarÄ«gi, lai jÅ«su lietojumprogramma tiktu pÄrtraukta ar minimÄlu ietekmi uz galalietotÄju un minimÄlu atkopÅ”anas laiku. Tas nozÄ«mÄ, ka pirms izslÄgÅ”anas tai ir jÄsaglabÄ visi dati, kas jÄsaglabÄ, jÄaizver visi tÄ«kla savienojumi, jÄpabeidz atlikuÅ”ais darbs un jÄpÄrvalda citi steidzami uzdevumi.
PraksÄ tas nozÄ«mÄ, ka jÅ«su lietojumprogrammai ir jÄspÄj apstrÄdÄt SIGTERM ziÅojumu ā procesa beigu signÄlu, kas ir Unix operÄtÄjsistÄmu nogalinÄÅ”anas utilÄ«ta noklusÄjuma signÄls. SaÅemot Å”o ziÅojumu, lietojumprogrammai vajadzÄtu izslÄgties.
Kad Kubernetes nolemj pÄrtraukt apkopi, notiek vairÄki notikumi. ApskatÄ«sim katru darbÄ«bu, ko Kubernetes veic, izslÄdzot konteineru vai podiÅu.
PieÅemsim, ka mÄs vÄlamies pÄrtraukt vienu no podiem. Å obrÄ«d tas pÄrtrauks saÅemt jaunu trafiku - konteineri, kas darbojas podÄ, netiks ietekmÄti, taÄu visa jaunÄ satiksme tiks bloÄ·Äta.
ApskatÄ«sim preStop ÄÄ·i, kas ir Ä«paÅ”a komanda vai HTTP pieprasÄ«jums, kas tiek nosÅ«tÄ«ts uz konteineriem podÄ. Ja jÅ«su lietojumprogramma netiek pareizi izslÄgta, saÅemot SIGTERM, varat izmantot preStop, lai pareizi izslÄgtu.
LielÄkÄ daļa programmu graciozi iziet, kad tÄs saÅems SIGTERM signÄlu, taÄu, ja izmantojat treÅ”Äs puses kodu vai kÄdu sistÄmu, kuru pilnÄ«bÄ nekontrolÄjat, preStop ÄÄ·is ir lielisks veids, kÄ piespiest graciozu izslÄgÅ”anu, nemainot lietojumprogrammu.
PÄc Ŕī ÄÄ·a izpildes Kubernetes nosÅ«tÄ«s SIGTERM signÄlu uz podÄ esoÅ”ajiem konteineriem, informÄjot, ka tie drÄ«z tiks atvienoti. SaÅemot Å”o signÄlu, jÅ«su kods turpinÄs izslÄgÅ”anas procesu. Å is process var ietvert jebkÄdu ilgstoÅ”u savienojumu, piemÄram, datu bÄzes savienojuma vai WebSocket straumes, apturÄÅ”anu, paÅ”reizÄjÄ stÄvokļa saglabÄÅ”anu un tamlÄ«dzÄ«gi.
Pat ja izmantojat preStop ÄÄ·i, ir ļoti svarÄ«gi pÄrbaudÄ«t, kas tieÅ”i notiek ar jÅ«su lietojumprogrammu, nosÅ«tot tai SIGTERM signÄlu, un kÄ tÄ uzvedas, lai notikumi vai izmaiÅas sistÄmas darbÄ«bÄ, ko izraisa pod izslÄgÅ”ana pÄrsteigums tev.
Å ajÄ brÄ«dÄ« Kubernetes gaidÄ«s noteiktu laiku, ko sauc par terminationGracePeriodSecond, vai periodu, lÄ«dz graciozi izslÄgsies, saÅemot SIGTERM signÄlu, un pÄc tam veiks turpmÄkas darbÄ«bas.
PÄc noklusÄjuma Å”is periods ir 30 sekundes. Ir svarÄ«gi atzÄ«mÄt, ka tas darbojas paralÄli preStop ÄÄ·im un SIGTERM signÄlam. Kubernetes negaidÄ«s, lÄ«dz beigsies preStop ÄÄ·is un SIGTERM ā ja jÅ«su lietojumprogramma tiks aizvÄrta pirms TerminationGracePeriod beigÄm, Kubernetes nekavÄjoties pÄries uz nÄkamo darbÄ«bu. TÄpÄc pÄrbaudiet, vai Ŕī perioda vÄrtÄ«ba sekundÄs nav mazÄka par laiku, kas nepiecieÅ”ams, lai pareizi izslÄgtu podziÅu, un, ja tas pÄrsniedz 30 s, palieliniet periodu lÄ«dz vÄlamajai vÄrtÄ«bai YAML. NorÄdÄ«tajÄ piemÄrÄ tas ir 60. gadi.
Visbeidzot, pÄdÄjais solis ir, ja konteineri joprojÄm darbojas pÄc terminationGracePeriod, tie nosÅ«tÄ«s SIGKILL signÄlu un tiks piespiedu kÄrtÄ izdzÄsti. Å ajÄ brÄ«dÄ« Kubernetes attÄ«rÄ«s arÄ« visus pÄrÄjos pod objektus.
Kubernetes aptur podi daudzu iemeslu dÄļ, tÄpÄc pÄrliecinieties, vai jÅ«su lietojumprogramma jebkurÄ gadÄ«jumÄ tiek pÄrtraukta, lai nodroÅ”inÄtu stabilu pakalpojumu.
Dažas reklÄmas š
Paldies, ka palikÄt kopÄ ar mums. Vai jums patÄ«k mÅ«su raksti? Vai vÄlaties redzÄt interesantÄku saturu? Atbalsti mÅ«s, pasÅ«tot vai iesakot draugiem,
Dell R730xd 2x lÄtÄk Equinix Tier IV datu centrÄ AmsterdamÄ? Tikai Å”eit
Avots: www.habr.com