Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

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

SadalÄ«tās sistēmas var bÅ«t grÅ«ti pārvaldÄ«t, jo tajās ir daudz kustÄ«gu, mainÄ«gu elementu, kuriem visiem ir jādarbojas pareizi, lai sistēma darbotos. Ja kāds no elementiem neizdodas, sistēmai tas ir jāatklāj, jāapiet un jānovērÅ”, un tas viss jādara automātiski. Å ajā Kubernetes paraugprakses sērijā mēs uzzināsim, kā iestatÄ«t gatavÄ«bas un dzÄ«vÄ«guma testus, lai pārbaudÄ«tu Kubernetes klastera darbÄ«bu.

VeselÄ«bas pārbaude ir vienkārÅ”s veids, kā paziņot sistēmai, vai jÅ«su lietojumprogrammas gadÄ«jums darbojas vai ne. Ja jÅ«su lietojumprogrammas gadÄ«jums nedarbojas, citiem pakalpojumiem nevajadzētu tai piekļūt vai nosÅ«tÄ«t tai pieprasÄ«jumus. Tā vietā pieprasÄ«jums ir jānosÅ«ta uz citu lietojumprogrammas gadÄ«jumu, kas jau darbojas vai tiks palaists vēlāk. Turklāt sistēmai ir jāatjauno jÅ«su lietojumprogrammas zaudētā funkcionalitāte.

Pēc noklusējuma Kubernetes sāks sÅ«tÄ«t datplÅ«smu uz aplikumu, kad darbosies visi podiņos esoÅ”ie konteineri, un atsāknēs konteinerus, kad tie avarē. Å Ä« noklusējuma sistēmas darbÄ«ba var bÅ«t pietiekami laba, taču jÅ«s varat uzlabot produkta izvietoÅ”anas uzticamÄ«bu, izmantojot pielāgotas saprāta pārbaudes.

Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

Par laimi, Kubernetes padara to diezgan viegli izdarāmu, tāpēc nav attaisnojuma Å”o pārbaužu ignorÄ“Å”anai. Kubernetes nodroÅ”ina divu veidu veselÄ«bas pārbaudes, un ir svarÄ«gi saprast atŔķirÄ«bas, kā katra tiek izmantota.

GatavÄ«bas pārbaude ir paredzēta, lai paziņotu Kubernetes, ka jÅ«su lietojumprogramma ir gatava apstrādāt trafiku. Pirms ļaut pakalpojumam nosÅ«tÄ«t trafiku uz podziņu, Kubernetes ir jāpārbauda, ā€‹ā€‹vai gatavÄ«bas pārbaude ir veiksmÄ«ga. Ja gatavÄ«bas pārbaude neizdodas, Kubernetes pārtrauks datplÅ«smas sÅ«tÄ«Å”anu uz podziņu, lÄ«dz pārbaude bÅ«s izturēta.

Liveness tests norāda Kubernetes, vai jÅ«su pieteikums ir dzÄ«vs vai miris. Pirmajā gadÄ«jumā Kubernetes to atstās mierā, otrajā izdzēsÄ«s miruÅ”o podiņu un aizstās to ar jaunu.

Iedomāsimies scenāriju, kurā lietojumprogrammas iesildÄ«Å”ana un palaiÅ”ana aizņem 1 minÅ«ti. JÅ«su pakalpojums nesāks darboties, kamēr lietojumprogramma nebÅ«s pilnÄ«bā ielādēta un darbosies, lai gan darbplÅ«sma jau ir sākusies. Problēmas radÄ«sies arÄ« tad, ja vēlaties paplaÅ”ināt Å”o izvietoÅ”anu lÄ«dz vairākām kopijām, jo ā€‹ā€‹Å”Ä«m kopijām nevajadzētu saņemt trafiku, kamēr tās nav pilnÄ«bā gatavas. Tomēr pēc noklusējuma Kubernetes sāks sÅ«tÄ«t trafiku, tiklÄ«dz sāksies procesi konteinerā.

Izmantojot gatavības testu, Kubernetes gaidīs, līdz lietojumprogramma darbojas pilnībā, pirms ļaus pakalpojumam nosūtīt trafiku uz jauno kopiju.

Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

Iedomāsimies citu scenāriju, kurā lietojumprogramma uzkaras uz ilgu laiku, pārtraucot apkalpoÅ”anas pieprasÄ«jumus. Procesam turpinoties, Kubernetes pēc noklusējuma pieņems, ka viss ir kārtÄ«bā, un turpinās sÅ«tÄ«t pieprasÄ«jumus uz nestrādājoÅ”u pod. Bet, izmantojot Liveness, Kubernetes noteiks, ka lietojumprogramma vairs neapkalpo pieprasÄ«jumus, un pēc noklusējuma restartēs miruÅ”o podziņu.

Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

ApskatÄ«sim, kā tiek pārbaudÄ«ta gatavÄ«ba un dzÄ«votspēja. Ir trÄ«s testÄ“Å”anas metodes - HTTP, Command un TCP. Lai pārbaudÄ«tu, varat izmantot jebkuru no tiem. VisizplatÄ«tākais veids, kā pārbaudÄ«t lietotāju, ir HTTP zonde.

Pat ja jūsu lietojumprogramma nav HTTP serveris, jūs joprojām varat izveidot vieglu HTTP serveri savā lietojumprogrammā, lai mijiedarbotos ar Liveness testu. Pēc tam Kubernetes sāks pingot podam, un, ja HTTP atbilde ir 200 vai 300 ms diapazonā, tas norāda, ka pods ir veselīgs. Pretējā gadījumā modulis tiks atzīmēts kā "neveselīgs".

Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

Komandu testiem Kubernetes palaiž komandu jÅ«su konteinerā. Ja komanda atgriežas ar nulles izejas kodu, konteiners tiks atzÄ«mēts kā vesels, pretējā gadÄ«jumā, saņemot izejas statusa numuru no 1 lÄ«dz 255, konteiners tiks atzÄ«mēts kā ā€œslimsā€. Å Ä« testÄ“Å”anas metode ir noderÄ«ga, ja nevarat vai nevēlaties palaist HTTP serveri, bet varat palaist komandu, kas pārbaudÄ«s jÅ«su lietojumprogrammas stāvokli.

Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

GalÄ«gais verifikācijas mehānisms ir TCP tests. Kubernetes mēģinās izveidot TCP savienojumu norādÄ«tajā portā. Ja to var izdarÄ«t, konteiners tiek uzskatÄ«ts par veselÄ«gu, ja nē, tas tiek uzskatÄ«ts par dzÄ«votspējÄ«gu. Å Ä« metode var bÅ«t noderÄ«ga, ja izmantojat scenāriju, kurā testÄ“Å”ana ar HTTP pieprasÄ«jumu vai komandas izpildi nedarbojas ļoti labi. Piemēram, galvenie pakalpojumi verifikācijai, izmantojot TCP, bÅ«tu gRPC vai FTP.

Kubernetes labākā prakse. Kubernetes dzīvīguma apstiprināŔana, izmantojot gatavības un dzīvīguma testus

Testus var konfigurēt vairākos veidos ar dažādiem parametriem. Varat norādÄ«t, cik bieži tie ir jāizpilda, kāds ir veiksmes un neveiksmes slieksnis un cik ilgi jāgaida atbildes. Papildinformāciju skatiet gatavÄ«bas un dzÄ«vÄ«guma testu dokumentācijā. Tomēr Liveness testa iestatÄ«Å”anā ir viens ļoti svarÄ«gs punkts - sākotnējās pārbaudes aizkaves inicialDelaySeconds iestatÄ«jums. Kā jau minēju, Ŕī testa neveiksmes rezultātā modulis tiks restartēts. Tāpēc jums ir jāpārliecinās, ka testÄ“Å”ana nesākas, kamēr lietojumprogramma nav gatava darbam, pretējā gadÄ«jumā tā sāks pārstartēt. Es iesaku izmantot P99 startÄ“Å”anas laiku vai vidējo lietojumprogrammas palaiÅ”anas laiku no bufera. Atcerieties pielāgot Å”o vērtÄ«bu, jo jÅ«su lietojumprogrammas startÄ“Å”anas laiks kļūst ātrāks vai lēnāks.

Lielākā daļa ekspertu apstiprinās, ka veselÄ«bas pārbaudes ir obligāta pārbaude jebkurai izplatÄ«tajai sistēmai, un Kubernetes nav izņēmums. Pakalpojuma veselÄ«bas pārbaužu izmantoÅ”ana nodroÅ”ina uzticamu, bezproblēmu Kubernetes darbÄ«bu un lietotājiem ir bez piepÅ«les.

Turpinājums jau pavisam drīz...

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