Kubernetes labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

Kubernetes labākā prakse. Mazo konteineru veidoŔana
Kubernetes labākā prakse. Kubernetes organizācija ar nosaukumvietu
Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus
Kubernetes labākā prakse. Resursu pieprasījumu un ierobežojumu iestatīŔana

Kubernetes labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

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.

Kubernetes labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

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.

Kubernetes labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

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.

Kubernetes labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

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.

Kubernetes labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

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 labākā prakse. Pareiza izslēgÅ”ana Pārtraukt

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.

Kubernetes labākā prakse. Ārējo pakalpojumu kartÄ“Å”ana

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, mākoņa VPS izstrādātājiem no 4.99 USD, unikāls sākuma līmeņa serveru analogs, ko mēs jums izgudrojām: Visa patiesība par VPS (KVM) E5-2697 v3 (6 kodoli) 10GB DDR4 480GB SSD 1Gbps no 19$ vai kā koplietot serveri? (pieejams ar RAID1 un RAID10, līdz 24 kodoliem un līdz 40 GB DDR4).

Dell R730xd 2x lētāk Equinix Tier IV datu centrā Amsterdamā? Tikai Å”eit 2x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV no 199$ NÄ«derlandē! Dell R420 ā€” 2x E5-2430 2.2 GHz 6C 128 GB DDR3 2x960 GB SSD 1 Gbps 100 TB ā€” no 99 USD! LasÄ«t par Kā izveidot infrastruktÅ«ras uzņēmumu klase ar Dell R730xd E5-2650 v4 serveru izmantoÅ”anu 9000 eiro par santÄ«mu?

Avots: www.habr.com

Pievieno komentāru