Lipatlisiso tsa bophelo ho Kubernetes li ka ba kotsi

Hlokomela. fetolela.: Moenjineri ea ka sehloohong oa Zalando, Henning Jacobs, o hlokometse khafetsa mathata har'a basebelisi ba Kubernetes ho utloisisa morero oa lipatlisiso tsa liveness (le ho itokisetsa) le tšebeliso ea tsona e nepahetseng. Ka hona, o ile a bokella menahano ea hae bukeng ena e matla, eo qetellong e tla fetoha karolo ea litokomane tsa K8s.

Lipatlisiso tsa bophelo ho Kubernetes li ka ba kotsi

Litlhahlobo tsa bophelo bo botle, tse tsejoang ho Kubernetes joalo ka lifeness probes (ke hore, ka ho toba, “liteko tsa ho sebetsa” - approx. transl.), e ka ba kotsi haholo. Ke khothaletsa ho li qoba ha ho khoneha: mekhelo feela ke ha e hlile e hlokahala 'me u tseba ka botlalo lintlha le litlamorao tsa ts'ebeliso ea tsona. Sengoliloeng sena se tla bua ka licheke tsa bophelo le ho itokisetsa, hape e tla u joetsa hore na ke maemong afe ke habohlokoa 'me ha ua lokela ho li sebelisa.

Mosebetsi-'moho le 'na Sandor o sa tsoa arolelana ho Twitter liphoso tse atileng haholo tseo a kopanang le tsona, ho kenyelletsa le tse amanang le ts'ebeliso ea lipatlisiso tsa ho itokisetsa / ho phela:

Lipatlisiso tsa bophelo ho Kubernetes li ka ba kotsi

E hlophisitsoe ka phoso livenessProbe e ka mpefatsa maemo a boima bo phahameng (ho koaloa ha bolo ea lehloa + nako e ka bang telele ea sejana / nako ea ho qala kopo) 'me ea lebisa litlamorao tse ling tse mpe joalo ka ho theoha ha ts'epo. (sheba hape sengoloa sa ka sa morao tjena mabapi le ho fokotsa palo ea likopo ho motsoako oa K3s + ACME). Ho hobe le ho feta ha tlhahlobo ea liveness e kopantsoe le tlhahlobo ea bophelo bo botle, e leng database ea kantle: ho hloleha ha DB e le 'ngoe ho tla qala lijana tsohle tsa hau bocha!

Molaetsa o akaretsang "U se ke ua sebelisa li-liveness probes" tabeng ena ha e na thuso haholo, kahoo a re shebeng hore na ho itokisa le ho hlahloba bophelo ke eng.

Tlhokomeliso: Bongata ba liteko tse ka tlase li ne li kenyelelitsoe ho litokomane tsa Zalando tsa ka hare tsa moqapi.

Readiness and Liveness licheke

Kubernetes e fana ka mekhoa e 'meli ea bohlokoa e bitsoang lipatlisiso tsa bophelo le boitokisetso ba ho hlahloba. Nako le nako ba etsa ketso e itseng-e kang ho romela kopo ea HTTP, ho bula khokahanyo ea TCP, kapa ho phethahatsa taelo ka har'a setshelo-ho tiisa hore kopo e sebetsa kamoo ho lebeletsoeng kateng.

Kubernetes e sebelisa boitokisetso bo hlahlobaho utloisisa ha setshelo se se se loketse ho amohela sephethephethe. Pod e nkoa e loketse ho sebelisoa haeba lijana tsohle tsa eona li lokile. Tšebeliso e 'ngoe ea mochine ona ke ho laola hore na ke li-pods life tse sebelisoang e le li-backend bakeng sa lits'ebeletso tsa Kubernetes (haholo-holo Ingress).

Lifeness probes thusa Kubernetes ho utloisisa ha e le nako ea ho qala setshelo bocha. Mohlala, cheke e joalo e u lumella ho thibela ho koaloa ha kopo sebakeng se le seng. Ho qala setshelo boemong bona ho thusa ho tlosa ts'ebeliso fatše leha ho na le liphoso, empa hape ho ka lebisa mefokolong ea pholiso (sheba ka tlase).

Haeba u leka ho kenya ts'ebetso ea ts'ebeliso e sa atleheng ho hlahloba bophelo / ho itokisetsa, ho phatlalatsoa ha eona ho tla emisoa ha Kubernetes e emetse boemo. Ready ho tsoa mefuteng eohle.

Mohlala:

Mona ke mohlala oa tlhahlobo ea ho itokisetsa ho hlahloba tsela /health ka HTTP e nang le li-setting tsa kamehla (nako: Metsotsoana e 10, khefutso: motsotsoana o le 1, monyetla oa katleho: 1, moedi wa ho hloleha: 3):

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

likhothaletso

  1. Bakeng sa li-microservices tse nang le HTTP endpoint (REST, joalo-joalo) kamehla hlalosa ho itokisa probe, e hlahlobang hore na kopo (pod) e loketse ho amohela sephethephethe.
  2. Etsa bonnete ba hore u itokiselitse probe e akaretsa boteng ba sebaka sa 'nete sa seva sa webo:
    • ho sebelisa likou bakeng sa merero ea tsamaiso, e bitsoang "admin" kapa "tsamaiso" (mohlala, 9090), bakeng sa readinessProbe, etsa bonnete ba hore ntlha ea ho qetela e khutlisa OK feela haeba kou ea mantlha ea HTTP (joaloka 8080) e se e loketse ho amohela sephethephethe*;

      *Ke tseba bonyane nyeoe e le 'ngoe Zalando moo sena se sa kang sa etsahala, ke hore. readinessProbe Ke ile ka hlahloba "botsamaisi" boema-kepe, empa seva ka boeona ha ea qala ho sebetsa ka lebaka la mathata a ho kenya cache.

    • ho kenya probe ea ho itokisa boema-kepeng bo fapaneng ho ka lebisa tabeng ea hore boima bo bongata boema-kepeng bo ka sehloohong bo ke ke ba bontšoa tlhahlobo ea bophelo bo botle (ke hore, letamo la khoele ho seva le tletse, empa tlhahlobo ea bophelo bo botle e ntse e bontša hore ntho e 'ngoe le e' ngoe e lokile. ).
  3. Etsa bonnete ba hore probe ea ho itokisa e thusa ho qala database / ho falla;
    • Tsela e bonolo ka ho fetisisa ea ho finyella sena ke ho ikopanya le seva sa HTTP feela ka mor'a hore ho qalisoa ho phethehile (mohlala, ho falla database ho tloha Flyway joalo joalo.); ke hore, ho e-na le ho fetola boemo ba ho hlahloba bophelo, feela u se ke ua qala seva sa marang-rang ho fihlela ho falla ha database ho phetheloa *.

      * Hape o ka tsamaisa lits'oants'o tsa database ho tsoa litsing tsa init kantle ho pod. Ke ntse ke rata likopo tse ikemetseng, ke hore, tseo ho tsona setshelo sa kopo se tsebang ho tlisa database sebakeng se lakatsehang ntle le khokahano ea kantle.

  4. Sebelisa httpGet bakeng sa tlhahlobo ea ho itokisa ho latela maemo a tloaelehileng a tlhahlobo ea bophelo (mohlala, /health).
  5. Utloisisa li-parameter tsa cheke tsa kamehla (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • likhetho tsa kamehla li bolela hore pod e tla ba ha e-so lokele ka mor'a metsotsoana e ka bang 30 (litlhahlobo tse 3 li hlōlehile).
  6. Sebelisa boema-kepe bo arohaneng bakeng sa "admin" kapa "taolo" haeba stack ea theknoloji (mohlala, Java/Spring) e e lumella, ho arola tsamaiso ea bophelo bo botle le metrics ho sephethephethe se tloaelehileng:
    • empa u seke oa lebala ka ntlha ea 2.
  7. Haeba ho hlokahala, probe ea ho itokisa e ka sebelisoa ho futhumatsa / kenya cache le ho khutlisa khoutu ea boemo ba 503 ho fihlela setshelo se futhumala:
    • Ke boetse ke khothaletsa hore u bale cheke e ncha startupProbe, e hlahile ka mofuta oa 1.16 (re ngotse ka eona ka Serussia mona - hoo e ka bang. fetolela.).

Lithako

  1. U se ke ua itšetleha ka batho ba ka ntle (joalo ka polokelo ea data) ha o etsa liteko tsa ho itokisa / ho phela - sena se ka lebisa ho hloleheng ho hoholo:
    • E le mohlala, ha re nke tšebeletso e ntle ea REST e nang le li-pods tse 10 ho itšetlehile ka database e le 'ngoe ea Postgres: ha cheke e itšetlehile ka khokahanyo ea ho sebetsa ho DB, li-pods tsohle tsa 10 li ka hlōleha haeba ho na le tieho lehlakoreng la marang-rang / DB - hangata ho joalo. tsohle li qetella li le mpe ho feta kamoo li neng li ka khona;
    • Ka kopo hlokomela hore data ea Spring e lekola khokahano ea database ka boiketsetso *;

      * Ena ke boitšoaro bo sa feleng ba Spring Data Redis (bonyane e ne e le lekhetlo la ho qetela ke hlahloba), e leng se ileng sa lebisa ho hloleheng ho "tlokotsi": ha Redis e ne e sa fumanehe ka nako e khutšoanyane, li-pods tsohle li ile tsa "thula".

    • "ka ntle" ka kutloisiso ena e ka boela ea bolela li-pods tse ling tsa ts'ebeliso e ts'oanang, ke hore, cheke ha ea lokela ho itšetleha ka boemo ba li-pods tse ling tsa sehlopha se le seng ho thibela ho phatloha ho hoholo:
      • liphetho li ka fapana bakeng sa lits'ebetso tse nang le boemo bo ajoang (mohlala, polokelong ea memori ho li-pods).
  2. U se ke ua sebelisa lipatlisiso tsa bophelo bakeng sa li-pods (mekhelo ke linyeoe ha li hlile li hlokahala 'me u tseba ka botlalo lintlha le litlamorao tsa ts'ebeliso ea tsona):
    • Sesebelisoa sa liveness se ka thusa ho khutlisa lijana tse fanyehiloeng, empa kaha o na le taolo e felletseng holim'a kopo ea hau, lintho tse kang lits'ebetso tse fanyehiloeng le li-deadlocks ha lia lokela ho etsahala: khetho e ntle ke ho senya ts'ebeliso ka boomo le ho e khutlisetsa boemong ba pele bo tsitsitseng;
    • patlisiso e hlolehileng ea bophelo e tla etsa hore sets'oants'o se qale hape, ka hona se ka mpefatsa litlamorao tsa liphoso tse amanang le ho palamisa: ho qala setshelo hape ho tla fella ka nako ea ho theoha (bonyane bakeng sa nako ea ho qala ts'ebeliso, e re metsotsoana e 30), ho baka liphoso tse ncha. , ho eketsa mojaro holim'a lijana tse ling le ho eketsa monyetla oa ho hlōleha ha bona, joalo-joalo;
    • licheke tsa bophelo bo kopantsoeng le ts'epo ea kantle ke motsoako o mobe ka ho fetesisa, o sokelang ho hloleha ha maemo: tieho e nyane lehlakoreng la database e tla lebisa ho qaleng ha lijana tsohle tsa hau!
  3. Mekhahlelo ea ho phela le ho itokisetsa ho hlahloba e tlameha ho fapana:
    • o ka sebelisa tlhahlobo ea bophelo ka tlhahlobo e ts'oanang ea bophelo bo botle, empa tekanyo e phahameng ea karabelo (failureThreshold), mohlala, abela boemo ha e-so lokele ka mor'a liteko tsa 3 'me u nahane hore lipatlisiso tsa liveness li hlōlehile ka mor'a boiteko ba 10;
  4. Se ke oa sebelisa li-exec checks, kaha li amahanngoa le mathata a tsejoang a lebisang ponahalong ea lits'ebetso tsa zombie:

Kakaretso

  • Sebelisa li-probes tsa ho itokisetsa ho fumana hore na pod e se e loketse ho amohela sephethephethe.
  • Sebelisa li-liveness probes feela ha li hlile li hlokahala.
  • Tšebeliso e fosahetseng ea lisebelisoa tsa ho itokisa / tsa bophelo li ka lebisa ho fokotseheng ho fumaneha le ho hlōleha ha maemo.

Lipatlisiso tsa bophelo ho Kubernetes li ka ba kotsi

Lisebelisoa tse ling ka sehlooho

Nchafatso ea nomoro ea 1 ho tloha ka 2019-09-29

Mabapi le lijana tsa init bakeng sa ho falla ha database: Ho ekelitsoe mongolo o botlaaseng ba leqephe.

EJ o ile a nkhopotsa mabapi le PDB: e 'ngoe ea mathata a ho hlahloba bophelo ke ho hloka tšebelisano lipakeng tsa li-pods. Kubernetes o na le eona Pod Disruption Budgets (PDB) ho fokotsa palo ea liphoso tse etsahalang ka nako e le 'ngoe tseo kopo e ka bang le tsona, leha ho le joalo licheke ha li nahanele PDB. Ka tsela e loketseng, re ka bolella K8s ho "Qala bocha pod e le 'ngoe haeba tlhahlobo ea eona e hlōleha, empa u se ke ua e qala kaofela ho qoba ho mpefatsa lintho."

Bryan o e beha hantle: “Sebelisa ho hlahloba bophelo ha u tseba hantle hore na ke eng molemo ka ho fetisisa ho etsa ke ho bolaea kopo"(hape, u se ke ua khelosoa).

Lipatlisiso tsa bophelo ho Kubernetes li ka ba kotsi

Nchafatso ea nomoro ea 2 ho tloha ka 2019-09-29

Mabapi le ho bala litokomane pele o sebelisoa: Ke entse kopo e lumellanang (kopo ea tšobotsi) ho eketsa litokomane tse mabapi le lipatlisiso tsa bophelo.

PS ho tsoa ho mofetoleli

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso