I-Liveness probes e-Kubernetes inokuba yingozi

Phawula. transl.: Injineli ekhokelayo evela eZalando, uHenning Jacobs, uye waqaphela ngokuphindaphindiweyo iingxaki phakathi kwabasebenzisi be-Kubernetes ekuqondeni injongo yokuphila (kunye nokulungela) iiprobes kunye nokusetyenziswa kwazo okuchanekileyo. Ke ngoko, uqokelele iingcinga zakhe kweli phetshana linamandla, eliya kuthi ekugqibeleni libe yinxalenye yamaxwebhu e-K8s.

I-Liveness probes e-Kubernetes inokuba yingozi

Iitshekhi zezempilo, ezaziwa eKubernetes njenge ububomi (o.k.t., ngokoqobo, “uvavanyo lokukwazi ukusebenza” - approx. transl.), kunokuba yingozi kakhulu. Ndincoma ukuba baphephe ukuba kunokwenzeka: ngaphandle kuphela xa kuyimfuneko ngokwenene kwaye uyazi ngokupheleleyo iinkcukacha kunye nemiphumo yokusetyenziswa kwazo. Olu papasho luya kuthetha malunga nokujonga ubomi kunye nokulungela ukutshekishwa, kwaye luya kukuxelela nokuba zeziphi iimeko ku fanele kwaye akufanele uzisebenzise.

Umlingane wam uSandor usandula ukwabelana kuTwitter ezona mpazamo zixhaphakileyo adibana nazo, kubandakanya nezo zinxulumene nokusetyenziswa kokulungela / ukwenza uphando:

I-Liveness probes e-Kubernetes inokuba yingozi

Ibunjwa ngendlela engalunganga livenessProbe ingazenza mandundu iimeko zomthwalo ophezulu (ukuvalwa kwebhola yekhephu + isikhongozeli esinokuba side/ixesha lokuqalisa isicelo) kwaye ikhokelele kwezinye iziphumo ezibi njengokuhla kokuxhomekeka. (bona kwakho inqaku lam lakutshanje malunga nokunciphisa inani lezicelo kwi K3s+ACME indibaniselwano). Kubi nangakumbi xa i-liveness probe idityanisiwe kunye nokujonga impilo, eyisiseko sedatha sangaphandle: ukusilela okukodwa kweDB kuyakuqala kwakhona zonke izikhongozeli zakho!

Umyalezo jikelele "Musa ukusebenzisa iiprobes eziphilayo" kule meko ayincedi kakhulu, ngoko ke makhe sijonge ukuba yintoni ukulungela kunye nokuhlolwa kokuphila.

Qaphela: Uninzi lovavanyo olungezantsi lwaluqukwe ekuqaleni kuxwebhu lomphuhlisi wangaphakathi weZalando.

Iitshekhi zokuLungela kunye nokuPhila

I-Kubernetes ibonelela ngeendlela ezimbini ezibalulekileyo ezibizwa ngokuba iiprobes zobomi kunye nokulungela ukuphonononga. Bahlala benza isenzo esithile-njengokuthumela isicelo se-HTTP, ukuvula uxhumano lwe-TCP, okanye ukwenza umyalelo kwisitya-ukuqinisekisa ukuba isicelo sisebenza njengoko kulindelwe.

UKubernetes usebenzisa ukulungela uphandoukuqonda xa isikhongozeli sikulungele ukwamkela i-traffic. I-pod ithathwa njengelungele ukusetyenziswa ukuba zonke izitya zayo zilungile. Enye indlela yokusetyenziswa kolu matshini kukulawula ukuba zeziphi iipods ezisetyenziswayo njenge backend kwiinkonzo zeKubernetes (kwaye ngakumbi i-Ingress).

Ubomi buphanda nceda uKubernetes aqonde xa ilixesha lokuphinda uqalise isikhongozeli. Umzekelo, itshekhi enjalo ikuvumela ukuba uthintele ukuvalwa xa isicelo sixinga endaweni enye. Ukuqalisa kwakhona isikhongozeli kweli lizwe kunceda ukususa usetyenziso emhlabeni ngaphandle kweempazamo, kodwa kunokukhokelela ekungaphumelelini kokuphoswa (jonga ngezantsi).

Ukuba uzama ukufaka uhlaziyo lwesicelo olusilelayo ukukhangela ukuphila / ukulungela, ukukhutshwa kwayo kuya kumiswa njengoko uKubernetes elindele isimo. Ready kuzo zonke iipod.

Umzekelo:

Nanku umzekelo wokulungela ukukhangela indlela /health ngeHTTP enemimiselo engagqibekanga (ithuba: 10 imizuzwana, kuphele ixesha: 1 umzuzwana, umda wempumelelo: 1, umda wokusilela: 3):

# часть общего описания deployment'а/стека
podTemplate:
  spec:
    containers:
    - name: my-container
      # ...
      readinessProbe:
        httpGet:
          path: /health
          port: 8080

Iingcebiso

  1. Kwiinkonzo ezincinci ezine-HTTP endpoint (REST, njl.) soloko uchaza uphando lokulungela, ejonga ukuba isicelo (ipod) sikulungele ukwamkela i-traffic.
  2. Qinisekisa ukulungela probe igubungela ubukho beyona ndawo yomncedisi wewebhu:
    • usebenzisa izibuko ngeenjongo zolawulo, ezibizwa ngokuba yi "admin" okanye "management" (umzekelo, 9090), ukwenzela readinessProbe, qiniseka ukuba isiphelo sibuyisela kuphela okuthi KULUNGILE ukuba izibuko zeHTTP eziphambili (ezifana ne 8080) zilungele ukwamkela itrafikhi*;

      *Ndiyazi nokuba linye ityala eZalando apho kungenzekiyo oku, okt. readinessProbe Ndijonge i-port "yolawulo", kodwa iseva ngokwayo ayizange iqalise ukusebenza ngenxa yeengxaki zokulayisha i-cache.

    • ukuqhoboshela i-probe yokulungela kwizibuko elahlukileyo kunokukhokelela kwinto yokuba ukulayisha ngaphezulu kwizibuko eliphambili akuyi kubonakaliswa kukhangelo lwempilo (oko kukuthi, iqula lomsonto kumncedisi ligcwele, kodwa ukukhangela impilo kusabonisa ukuba yonke into ilungile. ).
  3. Qiniseka ukuba iprobe yokulungela yenza ukuqaliswa kwesiseko sedatha/ukufuduka;
    • Eyona ndlela ilula yokufezekisa oku kukuqhagamshelana nomncedisi we HTTP kuphela emva kokuba uqaliso lugqityiwe (umzekelo, ukufudusa idatabase Flyway kwaye nangokunjalo.); Oko kukuthi, endaweni yokutshintsha imeko yokukhangela impilo, ungaqalisi umncedisi wewebhu de ufuduko lwesiseko sedata lugqitywe*.

      * Ungaqhuba nokufuduka kwedatha kwizikhongozeli ze-init ngaphandle kwepod. Ndisengumlandeli wezicelo ezizimeleyo, oko kukuthi, ezo apho isikhongozeli sesicelo siyakwazi ukuzisa i-database kwindawo efunwayo ngaphandle kolungelelwaniso lwangaphandle.

  4. Sebenzisa httpGet ukukhangela ukulungela ukukhangela isiphelo sempilo (umzekelo, /health).
  5. Qonda iiparamitha zokujonga okumiselweyo (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • iinketho ezingagqibekanga zithetha ukuba i-pod iya kuba ayilunganga emva kwemizuzwana engama-30 (i-3 ayiphumelelanga ukuhlolwa kwengqondo).
  6. Sebenzisa izibuko elahlukileyo lika "admin" okanye "ulawulo" ukuba istaki sobugcisa (umzekelo, iJava/Spring) siyasivumela, ukwahlula ulawulo lwezempilo kunye neemetrics kwitrafikhi eqhelekileyo:
    • kodwa ungalibali malunga nenqaku lesi-2.
  7. Ukuba kuyimfuneko, iprobe yokulungela ingasetyenziselwa ukufudumala / ukulayisha i-cache kwaye ubuyisele ikhowudi yesimo se-503 de isikhongozeli sifudumale:
    • Ndikwacebisa ukuba ufunde itshekhi entsha startupProbe, yavela kuguqulelo 1.16 (sibhale ngayo ngesiRashiya apha - malunga. guqulela.).

Imijelo

  1. Musa ukuthembela kwizinto ezixhomekeke ngaphandle (ezinje ngoovimba bedatha) xa uqhuba uvavanyo lokulungela/ukuphila - oku kunokukhokelela ekungaphumelelini kwenkqubo:
    • Njengomzekelo, makhe sithathe inkonzo ye-REST ehloniphekileyo ene-10 pods ngokuxhomekeke kwisiseko sedatha ye-Postgres enye: xa itshekhi ixhomekeke kuxhulumaniso olusebenzayo kwi-DB, zonke ii-pods ezili-10 zinokungaphumeleli ukuba kukho ukulibaziseka kwinethiwekhi / kwicala le-DB - ngokuqhelekileyo zonke ziphela zimbi ngakumbi kunokuba zinako;
    • Nceda uqaphele ukuba iDatha yaseNtwasahlobo ijonga uqhagamshelwano lwesiseko sedata ngokungagqibekanga*;

      * Oku kukuziphatha okungagqibekanga kwe-Spring Data Redis (ubuncinci yayilixesha lokugqibela nditshekisha), nto leyo eyakhokelela ekungaphumelelini "kwentlekele": xa iRedis yayingafumaneki ixesha elifutshane, zonke iipods "zaphuka".

    • "yangaphandle" ngokwale ngqiqo inokuthetha ezinye iipods zesicelo esifanayo, oko kukuthi, ukujonga akufuneki kuxhomekeke kwimeko yezinye iipods zeqela elifanayo ukuthintela ukuntlitheka kwe-scascading:
      • iziphumo zinokwahluka kwizicelo ezinesimo esisasaziweyo (umzekelo, i-caching yememori kwiipod).
  2. Musa ukusebenzisa i-liveness probe iipods (ngaphandle kweemeko xa ziyimfuneko ngokwenene kwaye uyazi ngokupheleleyo iinkcukacha kunye neziphumo zokusetyenziswa kwazo):
    • I-liveness probe inokunceda ukubuyisela izikhongozeli ezixhonyiweyo, kodwa ngenxa yokuba unolawulo olupheleleyo kwisicelo sakho, izinto ezifana neenkqubo ezixhonyiweyo kunye ne-deadlocks akufuneki zenzeke: eyona ndlela ingcono kukuwisa isicelo kwaye usibuyisele kwisimo sangaphambili esizinzileyo;
    • isingxobo esingaphumeleliyo siza kubangela ukuba isikhongozeli siqale ngokutsha, ngokwenza njalo oko kunokwenza mandundu iziphumo zokulayisha-impazamo ezinxulumene nokulayisha: ukuqalisa kwakhona isikhongozeli kuya kukhokelela kwixesha lokuphumla (ubuncinci bexesha lokuqaliswa kwesicelo, yithi imizuzwana engama-30), kubangela iimpazamo ezintsha. , ukwandisa umthwalo kwezinye izikhongozeli kunye nokwandisa amathuba okuhluleka kwabo, njl.;
    • iitshekhi zokuphila ezidityaniswe nokuxhomekeka kwangaphandle yeyona indibaniselwano imbi kakhulu, isoyikisa ukusilela: ukulibaziseka okuncinci kwicala lesiseko sedatha kuya kukhokelela ekuqaliseni ngokutsha kwazo zonke izikhongozeli zakho!
  3. Imilinganiselo yokuphila kunye nokulungela ukuhlola kufuneka yahluke:
    • ungasebenzisa i-liveness probe ngetshekhi efanayo yezempilo, kodwa umqobo wokuphendula ophezulu (failureThreshold), umzekelo, yabela ubume ayilunganga emva kwemizamo ye-3 kwaye ucinge ukuba i-liveness probe ayiphumelelanga emva kwemizamo ye-10;
  4. Musa ukusebenzisa i-exec checks, kuba zinxulunyaniswa neengxaki ezaziwayo ezikhokelela ekuveleni kweenkqubo ze-zombie:

Isishwankathelo

  • Sebenzisa i-probes yokulungela ukujonga xa i-pod ikulungele ukufumana i-traffic.
  • Sebenzisa iiprobes kuphela xa zifuneka ngokwenene.
  • Ukusetyenziswa ngokungafanelekanga kokulungela/ubomi beprobe kunokukhokelela ekufumanekeni okuncitshisiweyo kunye nokusilela okuhlayo.

I-Liveness probes e-Kubernetes inokuba yingozi

Izinto ezongezelelweyo ngesihloko

Uhlaziyo lwe-1 ukusuka kwi-2019-09-29

Malunga nezikhongozeli ze-init zokufuduka kwedatha: Umbhalo osemazantsi wongeziwe.

EJ wandikhumbuza malunga nePDB: enye yeengxaki zokujonga ubomi kukungabikho kolungelelwaniso phakathi kweepods. Kubernetes uye Uhlahlo lwabiwo-mali lokuphazamiseka kwePod (PDB) ukunciphisa inani leentsilelo zangaxeshanye isicelo esinokuzifumana, kodwa iitshekhi aziyithathi ngqalelo iPDB. Ngokufanelekileyo, sinokuxelela ii-K8s ukuba "Qalisa kwakhona i-pod enye ukuba uvavanyo lwayo aluphumeleli, kodwa ungaqalisi kwakhona konke ukuphepha ukwenza izinto zibe mbi ngakumbi."

UBryan wayibeka kakuhle: “Sebenzisa ukukhangela ukuphila xa usazi ukuba yintoni kanye kanye eyona nto ingcono yokwenza kukubulala isicelo"(kwakhona, musa ukuthabatheka).

I-Liveness probes e-Kubernetes inokuba yingozi

Uhlaziyo lwe-2 ukusuka kwi-2019-09-29

Ngokumalunga nokufunda amaxwebhu ngaphambi kokusetyenziswa: Ndenze isicelo esihambelanayo (isicelo somsebenzi) ukongeza amaxwebhu malunga neeprobe zobomi.

PS evela kumguquleli

Funda nakwibhlog yethu:

umthombo: www.habr.com

Yongeza izimvo