Mety hampidi-doza ny fanadihadiana momba ny fiainana ao Kubernetes

Fanamarihana. transl.: Injeniera mpitarika avy ao Zalando, Henning Jacobs, dia nahatsikaritra imbetsaka ny olana teo amin'ireo mpampiasa Kubernetes amin'ny fahatakarana ny tanjon'ny fitsirihana velona (sy ny fahavononana) sy ny fampiasana azy ireo. Noho izany, nanangona ny eritreriny tao amin'ity naoty malalaka ity izy, izay ho lasa ampahany amin'ny antontan-taratasy K8 amin'ny farany.

Mety hampidi-doza ny fanadihadiana momba ny fiainana ao Kubernetes

Fizahan-pahasalamana, fantatra amin'ny anarana hoe Kubernetes probes velona (izany hoe, ara-bakiteny, “fitsapana fahavelomana” - eo amin'ny transl.), mety tena mampidi-doza. Manoro hevitra ny manalavitra azy ireo aho raha azo atao: ny hany maningana dia rehefa tena ilaina izy ireo ary fantatrao tsara ny fepetra sy ny vokatry ny fampiasana azy ireo. Ity lahatsoratra ity dia hiresaka momba ny fanamarinana ny fahavitrihana sy ny fahavononana, ary hilaza aminao koa ny toe-javatra dia sarobidy ary tsy tokony hampiasa azy ireo ianao.

Ny mpiara-miasa amiko Sandor vao haingana no nizara tao amin'ny Twitter ny fahadisoana mahazatra indrindra sendra azy, ao anatin'izany ireo mifandraika amin'ny fampiasana ny fahavononana/fiainana:

Mety hampidi-doza ny fanadihadiana momba ny fiainana ao Kubernetes

Diso namboarina livenessProbe dia mety hanaratsy ny toe-javatra be vesatra (fanakatonana snowball + mety ho lavabe / fotoana fanombohana ny fampiharana) ary mety hiteraka voka-dratsy hafa toy ny fihenan'ny fiankinan-doha (Jereo ihany koa ny lahatsoratro vao haingana momba ny famerana ny isan'ny fangatahana amin'ny fitambaran'ny K3s+ACME). Mbola ratsy kokoa aza raha ampiarahina amin'ny fitsirihana ara-pahasalamana ny fanadihadiana momba ny fiainana, izay angon-drakitra ivelany: Ny tsy fahombiazan'ny DB tokana dia hamerina ny fitoeranao rehetra!

Hafatra ankapobeny "Aza mampiasa probe velona" amin'ity tranga ity dia tsy dia manampy loatra, ka andeha hojerentsika hoe inona ny fanamarinana fahavononana sy fahavelomana.

Fanamarihana: Ny ankamaroan'ny fitsapana etsy ambany dia nampidirina voalohany tao amin'ny antontan-taratasin'ny mpamorona anatiny an'i Zalando.

Fanamarinana fahavononana sy fahavelomana

Kubernetes dia manome mekanika lehibe roa antsoina hoe probe fahavitrihana sy probe fahavononana. Manao hetsika tsindraindray izy ireo—toy ny fandefasana fangatahana HTTP, fanokafana fifandraisana TCP, na fanatanterahana baiko ao anaty fitoeran-javatra—mba hanamafisana fa mandeha araka ny nantenaina ny fampiharana.

Mampiasa ny Kubernetes fahavononana probesmba hahatakarana rehefa vonona hanaiky fifamoivoizana ny kaontenera. Ny pod dia heverina ho vonona hampiasaina raha efa vonona avokoa ny fitoerany. Ny fampiasana iray amin'ity mekanika ity dia ny fanaraha-maso izay pods ampiasaina ho backends ho an'ny serivisy Kubernetes (ary indrindra ny Ingress).

Liveness probes ampio ny Kubernetes hahatakatra hoe rahoviana no fotoana hamerenana ny fitoeran-javatra. Ohatra, ny fanamarinana toy izany dia ahafahanao manakana ny fiatoana rehefa mijanona amin'ny toerana iray ny fampiharana iray. Ny famerenana indray ny kaontenera amin'ity fanjakana ity dia manampy amin'ny fanesorana ny fampiharana amin'ny tany na dia eo aza ny fahadisoana, saingy mety hitarika amin'ny tsy fahombiazan'ny cascading (jereo eto ambany).

Raha manandrana mametraka fanavaozam-baovao tsy mahomby amin'ny fanamarinana ny fahavitrihana/fahavononana ianao, dia hijanona ny fandefasana azy rehefa miandry ny sata i Kubernetes. Ready avy amin'ny sakafo rehetra.

ohatra

Ity misy ohatra iray amin'ny fizahana fahavononana manamarina lalana iray /health amin'ny alàlan'ny HTTP miaraka amin'ny fanovana default (elanelana: 10 segondra, fotoana dila: 1 segondra, tokonam-pahombiazana: 1, tokonana tsy fahombiazana:3):

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

tolo-kevitra

  1. Ho an'ny microservices misy HTTP endpoint (REST, sns.) mamaritra foana ny fahavononana probe, izay manamarina raha vonona hanaiky fifamoivoizana ny fampiharana (pod).
  2. Ataovy azo antoka ny fahavononana probe mandrakotra ny fisian'ny seranana mpizara tranonkala tena izy:
    • mampiasa seranana ho an'ny tanjona ara-pitantanana, antsoina hoe "admin" na "fitantanana" (ohatra, 9090), ho an'ny readinessProbe, ataovy azo antoka fa miverina OK ihany ny teboka farany raha toa ny seranan-tsambo HTTP voalohany (toa ny 8080) dia vonona ny hanaiky ny fifamoivoizana*;

      *Mahafantatra tranga iray farafahakeliny aho tany Zalando izay tsy nisy izany, izany hoe. readinessProbe Nojereko ny seranan-tsambo "fitantanana", fa ny mpizara mihitsy no tsy nanomboka niasa noho ny olana amin'ny fametrahana ny cache.

    • Ny fametahana probe fahavononana amin'ny seranana misaraka dia mety hitarika amin'ny hoe tsy ho hita taratra amin'ny fisavana ara-pahasalamana ny enta-mavesatra eo amin'ny seranan-tsambo lehibe (izany hoe feno ny dobo filomanosana ao amin'ny server, fa ny fizahana ara-pahasalamana dia mbola mampiseho fa OK ny zava-drehetra. ).
  3. Hamarino tsara izany Ny famotopotorana fahavononana dia ahafahan'ny fanombohana / fifindra-monina;
    • Ny fomba tsotra indrindra hanatrarana izany dia ny mifandray amin'ny mpizara HTTP raha tsy aorian'ny fahavitan'ny fanombohana (ohatra, mifindra angona avy amin'ny Flyway sy ny sisa.); izany hoe, raha tokony hanova ny sata fanamarinana ara-pahasalamana, dia aza atomboka fotsiny ny mpizara tranonkala mandra-pahavitan'ny fifindra-monina *.

      * Azonao atao koa ny mampandeha ny fifindran'ny angona avy amin'ny kaontenera init ivelan'ny pod. Mbola mpankafy ny rindranasa tsy miankina aho, izany hoe ireo izay hain'ny fitoeran'ny fampiharana ny fomba hitondrana ny angona ao amin'ny fanjakana tiana tsy misy fandrindrana ivelany.

  4. fampiasana httpGet ho an'ny fisavana ny fahavononana amin'ny alàlan'ny teboka farany amin'ny fitsirihana ara-pahasalamana mahazatra (ohatra, /health).
  5. Fantaro ny mari-pamantarana fanamarinana default (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • ny safidy default dia midika fa ho lasa ilay pod tsy vonona aorian'ny 30 segondra eo ho eo (3 tsy nahomby ny fisavana ara-pahasalamana).
  6. Mampiasà seranan-tsambo mitokana ho an'ny "admin" na "fitantanana" raha mamela azy io ny fitambaran'ny teknolojia (oh: Java/Spring), hanasaraka ny fitantanana ny fahasalamana sy ny metrika amin'ny fifamoivoizana mahazatra:
    • fa aza adino ny point 2.
  7. Raha ilaina, ny probe fahavononana dia azo ampiasaina hanafanana / hamenoana ny cache ary hamerina ny fehezan-dalàna 503 mandra-panafana ny fitoeran-javatra:
    • Manoro hevitra anao koa aho hamaky ny seky vaovao startupProbe, niseho tamin'ny version 1.16 (Nanoratra momba izany izahay tamin'ny teny Rosiana eto - eo ho eo. transl.).

fampitandremana

  1. Aza miantehitra amin'ny fiankinan-doha ivelany (toy ny trano fanatobiana angona) rehefa manao fitsapana fahavononana/fiainana - mety hitarika tsy fahombiazana misesisesy izany:
    • Ohatra, andeha isika haka serivisy REST amin'ny fanjakana miaraka amin'ny pods 10 miankina amin'ny angon-drakitra Postgres iray: rehefa miankina amin'ny fifandraisana miasa amin'ny DB ny fisavana dia mety tsy hahomby ny pods 10 rehetra raha misy fahatarana eo amin'ny lafiny tambajotra / DB - matetika izany miafara amin'ny ratsy noho izay mety ho vitany;
    • Mariho fa ny Spring Data dia manamarina ny fifandraisana amin'ny angona amin'ny alàlan'ny default*;

      * Ity no fitondran-tena mahazatra an'ny Spring Data Redis (farafaharatsiny io no fotoana farany nanamarinako), izay nitarika ho amin'ny tsy fahombiazana "loza": rehefa tsy nisy ny Redis nandritra ny fotoana fohy, dia "nirodana" ny pods rehetra.

    • Ny "ivelany" amin'io heviny io dia mety hidika koa pods hafa mitovy fampiharana, izany hoe, ny fanamarinana dia tsy tokony hiankina amin'ny toetry ny pods hafa amin'ny cluster iray ihany mba hisorohana ny fianjeran'ny cascading:
      • Mety hiovaova ny valiny ho an'ny fampiharana misy fanjakana mizara (ohatra, caching ao anaty fitadidiana ao anaty pods).
  2. Aza mampiasa probe velona ho an'ny pods (manavaka dia tranga izay tena ilaina ary fantatrao tsara ny fepetra sy ny vokatry ny fampiasana azy ireo):
    • Afaka manampy amin'ny famerenana ny kaontenera nahantona ny fanadihadian'ny fiainana, saingy satria manana fifehezana feno amin'ny fampiharanao ianao, dia tsy tokony hitranga ny zavatra toy ny dingana mihantona sy ny fahatapahan-dàlana: ny safidy tsara indrindra dia ny manafoana ny fampiharana ary mamerina izany amin'ny toe-javatra tsy miova teo aloha;
    • Ny fanadihadian'ny fiainana tsy nahomby dia hahatonga ny kaontenera hanomboka indray, ka mety hampitombo ny vokatry ny lesoka mifandraika amin'ny entana: ny famerenana indray ny kaontenera dia hiteraka fiatoana (farafaharatsiny mandritra ny faharetan'ny fanombohana ny fampiharana, lazao 30 segondra hafahafa), miteraka fahadisoana vaovao. , mampitombo ny enta-mavesatra amin'ny kaontenera hafa ary mampitombo ny mety ho tsy fahombiazany, sns.;
    • Ny fanaraha-maso velona miaraka amin'ny fiankinan-doha ivelany no fitambarana ratsy indrindra mety hitranga, mandrahona ny tsy fahombiazan'ny cascade: ny fahatarana kely eo amin'ny lafiny angona dia hitarika amin'ny famerenana ny fitahirizanao rehetra!
  3. Parameteran'ny fanamarinana ny fahavelomana sy ny fahavononana tsy maintsy hafa:
    • azonao atao ny mampiasa probe momba ny fiainana miaraka amin'ny fisavana ara-pahasalamana mitovy, fa ny fetran'ny valiny avo kokoa (failureThreshold), ohatra, manendry ny sata tsy vonona aorian'ny andrana in-3 ary hevero fa tsy nahomby ny famotopotorana velona taorian'ny andrana 10;
  4. Aza mampiasa fanamarinana exec, satria izy ireo dia mifandray amin'ny olana fantatra izay mitarika amin'ny fisehoan'ny fizotry ny zombie:

famintinana

  • Mampiasà probe fahavononana hamaritana hoe rahoviana ny pod iray dia vonona handray fifamoivoizana.
  • Mampiasà probes velona rehefa tena ilaina.
  • Ny fampiasana tsy araka ny tokony ho izy ny fahavononana/fiainana fitsikilovana dia mety hitarika amin'ny fihenan'ny fahafaha-manao sy ny tsy fahombiazan'ny cascade.

Mety hampidi-doza ny fanadihadiana momba ny fiainana ao Kubernetes

Fitaovana fanampiny momba ny lohahevitra

Fanavaozana laharana 1 amin'ny 2019-09-29

Momba ny container init ho an'ny fifindra-monina angona: Nampiana fanamarihana ambany pejy.

Nampahatsiahy ahy i EJ momba ny PDB: iray amin'ireo olana amin'ny fanaraha-maso velona ny tsy fisian'ny fandrindrana eo amin'ny pods. Kubernetes manana Tetibola fanakorontanana Pod (PDB) mba hamerana ny isan'ny tsy fahombiazan'ny fampiharana iray, na izany aza, ny fisavana dia tsy miraharaha ny PDB. Ny tsara indrindra dia azontsika atao ny milaza amin'ny K8s hoe "Avereno indray ny pod iray raha tsy mahomby ny fitsapana azy, fa aza avereno indray izy rehetra mba tsy hiharatsy ny zava-drehetra."

Nataon'i Bryan tsara izany: “Mampiasà fandinihan-tena velona rehefa fantatrao tsara hoe inona ny zavatra tsara indrindra atao dia ny mamono ny fampiharana"(aza variana koa).

Mety hampidi-doza ny fanadihadiana momba ny fiainana ao Kubernetes

Fanavaozana laharana 2 amin'ny 2019-09-29

Momba ny famakiana ny antontan-taratasy alohan'ny fampiasana: Namorona ny fangatahana mifanaraka amin'izany aho (fangatahana endri-javatra) hanampiana antontan-taratasy momba ny fitsikilovana velona.

PS avy amin'ny mpandika teny

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment