Nyocha ndụ ndụ na Kubernetes nwere ike ịdị ize ndụ

Rịba ama. ntụgharị asụsụ.: Onye ndu injinia sitere na Zalando, Henning Jacobs, achọpụtala ọtụtụ oge nsogbu n'etiti ndị ọrụ Kubernetes n'ịghọta ebumnuche nke ndụ (na ịdị njikere) nyocha na ojiji ha ziri ezi. Ya mere, ọ chịkọtara echiche ya na akwụkwọ ikike a, nke ga-emecha bụrụ akụkụ nke akwụkwọ K8s.

Nyocha ndụ ndụ na Kubernetes nwere ike ịdị ize ndụ

Nyocha ahụike, mara na Kubernetes dị ka ndụ nyocha (ya bụ, n'ụzọ nkịtị, “nnwale viability” - ihe dị ka ntụgharị.), nwere ike ịdị ize ndụ. Ana m akwado ịzere ha ma ọ bụrụ na ọ ga-ekwe omume: naanị ihe dị iche bụ mgbe ha dị mkpa n'ezie na ị maara nke ọma nkọwa na nsonaazụ nke ojiji ha. Akwụkwọ a ga-ekwu maka ịdị ndụ na nlele njikere, ma gwakwa gị n'ọnọdụ ndị dị aṅaa bara uru na i kwesịghị iji ha.

N'oge na-adịbeghị anya, onye ọrụ ibe m Sandor kesara na Twitter mmejọ ndị ọ na-ezutekarị, gụnyere ndị metụtara iji nyocha ịdị njikere/ịdị ndụ:

Nyocha ndụ ndụ na Kubernetes nwere ike ịdị ize ndụ

Haziri ezighi ezi livenessProbe nwere ike ime ka ọnọdụ dị elu ka njọ (mchichi snowball + nwere ike ịdị ogologo oge / oge mmalite ngwa) ma bute nsonaazụ ndị ọzọ na-adịghị mma dị ka nkwụsịtụ ịdabere. (leekwa edemede m na nso nso a gbasara ịmachi ọnụ ọgụgụ nke arịrịọ na ngwakọta K3s+ACME). Ọ kadị njọ mgbe ejikọtara nyocha ndụ ndụ na nlele ahụike, nke bụ nchekwa data mpụga: otu ọdịda DB ga-amalitegharị arịa gị niile!

Ozi izugbe "Ejila nyocha ndụ ndụ" na nke a ọ naghị enyere aka nke ukwuu, ya mere, ka anyị lelee ihe nlele njikere na ndụ ndụ bụ maka.

Mara: Ọtụtụ n'ime ule dị n'okpuru ka etinyere na mbụ na akwụkwọ nrụpụta ime Zalando.

Nyocha njikere na ịdị ndụ

Kubernetes na-enye usoro abụọ dị mkpa a na-akpọ nyocha ndụ na njikere nyocha. Ha na-eme ụfọdụ ihe kwa oge - dị ka izipu arịrịọ HTTP, imepe njikọ TCP, ma ọ bụ ime iwu n'ime akpa - iji gosi na ngwa ahụ na-arụ ọrụ dịka a tụrụ anya ya.

Kubernetes na-eji nyocha njikereịghọta mgbe akpa dị njikere ịnakwere okporo ụzọ. A na-ewere pọd ka ọ dịlarị maka ojiji ma ọ bụrụ na akpa ya niile adịla njikere. Otu ojiji nke usoro a bụ ịchịkwa pọd ndị a na-eji dị ka ndabere maka ọrụ Kubernetes (na karịsịa Ingress).

Nyocha ndụ ndụ nyere Kubernetes aka ịghọta mgbe ọ bụ oge ịmalitegharị akpa ahụ. Dịka ọmụmaatụ, nlele dị otú ahụ na-enye gị ohere igbochi nkwụsị mgbe ngwa na-arapara n'otu ebe. Ịmalite akpa ahụ na steeti a na-enyere aka iwepụ ngwa ahụ n'ala n'agbanyeghị njehie, mana ọ nwekwara ike iduga ọdịda cascading (lee n'okpuru).

Ọ bụrụ n’ịgbalị ibulite mmelite ngwa nke na-adaghị nyocha ịdị ndụ/ịdị njikere, a ga-akwụsị ibugharị ya ka Kubernetes na-eche ọkwa ahụ. Ready site na pods niile.

Ihe nlele:

Nke a bụ ọmụmaatụ nke nyocha ịdị njikere na-enyocha ụzọ /health site na HTTP nwere ntọala ndabara (nkeji: 10 sekọnd, nkeji oge: 1 sekọnd, ọnụ ụzọ ịga nke ọma: 1, oke ọdịda: 3):

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

na-atụ aro

  1. Maka microservices nwere njedebe HTTP (REST, wdg) na-akọwapụta nyocha ịdị njikere mgbe niile, nke na-enyocha ma ngwa (pod) dị njikere ịnakwere okporo ụzọ.
  2. Gbaa mbọ hụ na nyocha ịdị njikere na-ekpuchi nnweta nke ọdụ ụgbọ mmiri sava weebụ n'ezie:
    • iji ọdụ ụgbọ mmiri maka ebumnuche nhazi, nke a na-akpọ "admin" ma ọ bụ "management" (dịka ọmụmaatụ, 9090), maka readinessProbe, jide n'aka na njedebe njedebe na-alaghachi OK ma ọ bụrụ na ọdụ ụgbọ mmiri HTTP mbụ (dị ka 8080) dị njikere ịnakwere okporo ụzọ *;

      *Amaara m opekata mpe otu ikpe na Zalando ebe nke a na-emeghị, ya bụ. readinessProbe Achọpụtara m ọdụ ụgbọ mmiri "njikwa", mana ihe nkesa ahụ n'onwe ya amaliteghị ịrụ ọrụ n'ihi nsogbu na-ebufe cache.

    • ijikọ nyocha ịdị njikere na ọdụ ụgbọ mmiri dị iche nwere ike iduga n'eziokwu na ibufe ibu na ọdụ ụgbọ mmiri agaghị egosipụta na nlele ahụike (ya bụ, ọdọ mmiri eri na sava ahụ jupụtara, mana nyocha ahụike ka na-egosi na ihe niile dị mma. ).
  3. Jide n'aka na Nyocha njikere na-enyere mmalite/mbugharị nchekwa data aka;
    • Ụzọ kachasị mfe iji nweta nke a bụ ịkpọtụrụ HTTP naanị mgbe ịmalitechara ya (dịka ọmụmaatụ, ịkwaga nchekwa data site na. Flyway were gabazie.); ya bụ, kama ịgbanwe ọnọdụ nlele ahụike, ebidola sava weebụ ahụ ruo mgbe emechara mbugharị nchekwa data *.

      * Ịnwekwara ike ịme njem data site na igbe init na mpụga pọd. M ka bụ onye na-akwado ngwa nke nwere onwe ya, ya bụ, ndị nke ngwa ngwa maara ka esi ebute nchekwa data n'ime steeti achọrọ na-enweghị nhazi nke mpụga.

  4. Jiri httpGet maka nlele njikere site na njedebe nlele ahụike (dịka ọmụmaatụ, /health).
  5. Ghọta paramita nlele ndabara (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • nhọrọ ndabara pụtara na pọd ga-aghọ adịghị njikere mgbe ihe dị ka sekọnd 30 gachara (nleba anya nke ịdị ọcha 3 dara).
  6. Jiri ọdụ ụgbọ mmiri dị iche maka "admin" ma ọ bụ "njikwa" ma ọ bụrụ na nchịkọta teknụzụ (dịka Java/Spring) na-enye ya ohere, ikewapụ nlekọta ahụike na metrik na okporo ụzọ oge niile:
    • mana echefula maka isi okwu 2.
  7. Ọ bụrụ na ọ dị mkpa, enwere ike iji nyocha ịdị njikere mee ka ọ kpoo cache ma weghachi koodu ọnọdụ 503 ruo mgbe akpa ahụ dị ọkụ:
    • Ana m akwado ka ị gụọ nlele ọhụrụ startupProbe, pụtara na ụdị 1.16 (anyị dere banyere ya na Russian ebe a - ihe ruru. ntụgharị asụsụ.).

Caveats

  1. Atụkwasịla obi na ịdabere na mpụga (dị ka ụlọ nkwakọba ihe data) mgbe ị na-eme ule njikere/ịdị ndụ - nke a nwere ike ibute ọdịda ọdịda:
    • Dịka ọmụmaatụ, ka anyị were ọrụ REST mara mma nke nwere 10 pods dabere na otu nchekwa data Postgres: mgbe nlele ahụ dabere na njikọ ọrụ na DB, pods 10 niile nwere ike ịda ma ọ bụrụ na ọ na-egbu oge n'akụkụ netwọk / DB - na-emekarị ya. niile na-agwụ njọ karịa ka ọ nwere ike;
    • Biko mara na mmiri data na-enyocha njikọ nchekwa data na ndabara*;

      * Nke a bụ omume ndabara nke Spring Data Redis (opekata mpe, ọ bụ oge ikpeazụ m nyochara), nke butere ọdịda "oke ọdachi": mgbe Redis adịghị adị obere oge, pọd niile "dara".

    • "Mpụga" n'echiche a nwekwara ike ịpụta pọd ndị ọzọ nke otu ngwa ahụ, ya bụ, n'ezie nlele ahụ ekwesịghị ịdabere na ọnọdụ nke pọd ndị ọzọ nke otu ụyọkọ ahụ iji gbochie mkpọka mkpọka:
      • Nsonaazụ nwere ike ịdị iche maka ngwa nwere steeti ekesa (dịka ọmụmaatụ, nchekwa nchekwa na pọd).
  2. Ejila nyocha ndụ ndụ maka pods (iche bụ ikpe mgbe ha dị ezigbo mkpa ma ị maara nke ọma nkọwa na nsonaazụ nke ojiji ha):
    • Nyocha ndụ ndụ nwere ike inye aka nwetaghachi arịa a kwụwara n'elu, mana ebe ọ bụ na ị nwere ikike zuru oke na ngwa gị, ihe ndị dị ka usoro kwụgidere na mkpọchi agaghị eme nke ọma: nhọrọ kacha mma bụ iji ụma mebie ngwa ahụ wee weghachite ya na ọnọdụ kwụ ọtọ gara aga;
    • nyocha ndụ dara ada ga-eme ka akpa ahụ malitegharịa, si otú ahụ nwee ike ịka njọ nsonaazụ nke mmejọ ndị metụtara nbudata: ịmalitegharị akpa ahụ ga-ebute ọdịda (ọ dịkarịa ala maka oge mmalite ngwa ahụ, kwuo 30-second), na-akpata njehie ọhụrụ. , na-abawanye ibu na arịa ndị ọzọ na ịbawanye ohere nke ọdịda ha, wdg;
    • Nlele ndụ ndụ jikọtara ya na ịdabere na mpụga bụ ngwakọta kachasị njọ enwere ike, na-eyi ọdịda egwu egwu: ntakịrị igbu oge n'akụkụ nchekwa data ga-eduga na ịmalitegharị arịa gị niile!
  3. Oke nke ndụ na nlele njikere ga-adị iche:
    • ị nwere ike iji nyocha ndụ nwere otu nlele ahụike, mana ọnụ ụzọ nzaghachi dị elu (failureThreshold), dịka ọmụmaatụ, kenye ọkwa adịghị njikere mgbe 3 mgbalị ma tụlee na liveness nyocha dara mgbe 10 mgbalị;
  4. Ejila exec checks, ebe ọ bụ na ha na-ejikọta ya na nsogbu ndị a maara nke na-eduga na ọdịdị nke usoro zombie:

Nchịkọta

  • Jiri nyocha njikere iji chọpụta mgbe pọd dị njikere ịnata okporo ụzọ.
  • Jiri nyocha ndụ naanị mgbe achọrọ ha n'ezie.
  • Ojiji nyocha nke ịdị njikere/ịdị ndụ na-ezighi ezi nwere ike ibute mbelata nnweta yana ọdịda ọdịda.

Nyocha ndụ ndụ na Kubernetes nwere ike ịdị ize ndụ

Ihe mgbakwunye na isiokwu

Melite nọmba 1 site na 2019-09-29

Banyere arịa init maka mbugharị nchekwa data: Agbakwunyere ihe odide ala ala peeji.

EJ chetara m gbasara PDB: otu n'ime nsogbu na nlele ndụ ndụ bụ enweghị nhazi n'etiti pọd. Kubernetes nwere Mmefu ego mmebi iwu (PDB) iji belata ọnụ ọgụgụ ọdịda n'otu oge ngwa nwere ike ịnweta, agbanyeghị, ndenye ego anaghị eburu n'uche PDB. Dị ka o kwesịrị, anyị nwere ike ịgwa K8 ka ha "Malitegharịa otu pọd ma ọ bụrụ na ule ya adaghị, mana amaliteghachila ha niile iji zere ime ka ihe ka njọ."

Bryan tinyere ya nke ọma: “Jiri nyocha ndụ mgbe ị maara nke ọma ihe ihe kacha mma ime bụ igbu ngwa"(ọzọ, ebula gị).

Nyocha ndụ ndụ na Kubernetes nwere ike ịdị ize ndụ

Melite nọmba 2 site na 2019-09-29

Banyere ịgụ akwụkwọ tupu ejiri ya: M mepụtara arịrịọ kwekọrọ (atụmatụ arịrịọ) ịgbakwunye akwụkwọ gbasara nyocha ndụ ndụ.

PS sitere na onye ntụgharị

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment