O su'esu'ega ola i Kubernetes e mafai ona lamatia

Manatua. fa'aliliu.: Enisinia ta'ita'i mai Zalando, Henning Jacobs, ua fa'afia ona matauina fa'afitauli i tagata Kubernetes i le malamalama i le fa'amoemoega o su'esu'ega ola (ma saunia) ma lo latou fa'aoga sa'o. O le mea lea, na ia aoina ai ona mafaufauga i lenei faʻamatalaga mataʻutia, lea o le a iu lava ina avea ma vaega o le K8s pepa.

O su'esu'ega ola i Kubernetes e mafai ona lamatia

Su'ega fa'alesoifua maloloina, e ta'ua i le Kubernetes pei su'esu'ega ola (o lona uiga, o le mea moni, “su'ega fa'atino” - approx. transl.), e mafai ona matua matautia. Ou te fautuaina le aloese mai ia i latou pe a mafai: na o le pau lava le tuusaunoaga o le taimi e matua manaʻomia ai ma e te nofouta atoatoa i faʻamatalaga ma taunuuga o lo latou faʻaaogaina. O lenei lomiga o le a talanoa e uiga i le ola ma le saunia o siaki, ma o le a taʻu atu foi ia te oe i tulaga e taua ma e le tatau ona e faaaogaina.

O laʻu paaga o Sandor talu ai nei na faʻasoa i luga o le Twitter mea masani masani na ia feagai, e aofia ai mea e fesoʻotaʻi ma le faʻaogaina o suʻesuʻega saunia / ola:

O su'esu'ega ola i Kubernetes e mafai ona lamatia

Ua sese le fa'atulagaina livenessProbe e mafai ona fa'ateteleina tulaga maualuga (tapuni le kiona + e ono umi le atigipusa/taimi e amata ai talosaga) ma ta'ita'i atu ai i isi a'afiaga e pei o le fa'aitiitia o le fa'alagolago. (vaai foi la'u tala lata mai e uiga i le fa'atapula'aina o numera o talosaga i le K3s+ACME tu'ufa'atasia). E sili atu le leaga pe a tuʻufaʻatasia le suʻesuʻega ola ma se siaki faʻalesoifua maloloina, o se faʻamaumauga mai fafo: ose faaletonu DB e toe amata uma au koneteina!

Feau aoao "Aua le faʻaaogaina suʻega ola" i lenei tulaga e le fesoasoani tele, o lea seʻi o tatou vaʻai i le mea e fai ai siaki sauniuni ma le ola.

Fa'aaliga: O le tele o su'ega o lo'o i lalo na fa'auluina i totonu o fa'amaumauga a le atina'e a Zalando.

Siakiga o le Sauniuni ma le Ola

Kubernetes e maua ai ni auala taua se lua e taʻua su'ega ola ma su'esu'ega saunia. Latou te faia i lea taimi ma lea taimi nisi gaioiga-e pei o le auina atu o se HTTP talosaga, tatalaina se TCP fesoʻotaʻiga, poʻo le faʻatinoina o se faʻatonuga i totonu o le pusa-e faʻamaonia ai o loʻo galue le talosaga e pei ona faʻamoemoeina.

Fa'aaoga e Kubernetes saunia su'esu'eia malamalama pe a sauni le container e talia feoaiga. O se pusa ua manatu ua sauni mo le fa'aoga pe afai ua sauni uma ana koneteina. Tasi le fa'aogaina o lenei masini o le fa'atonutonu lea po'o fea pods e fa'aaogaina e fai ma pito i tua mo 'au'aunaga Kubernetes (aemaise lava Ingress).

Su'esu'ega ola fesoasoani ia Kubernetes ia malamalama pe a oo i le taimi e toe amata ai le pusa. Mo se faʻataʻitaʻiga, o sea siaki e mafai ai ona e faʻalavelaveina se faʻalavelave pe a pipii se talosaga i se nofoaga e tasi. O le toe amataina o le atigipusa i lenei setete e fesoasoani e aveese le talosaga mai le eleele e ui lava i mea sese, ae e mafai foi ona oʻo atu ai i le faʻaletonu (vaai i lalo).

Afai e te taumafai e faʻapipiʻi se faʻafouga o talosaga e le mafai ai ona siaki le ola/sauniuni, o le a faʻagata lana taʻavale aʻo faʻatali Kubernetes mo le tulaga. Ready mai fatu uma.

Faataitaiga:

O se fa'ata'ita'iga lea o se su'esu'ega sauniuni e siaki ai se ala /health e ala i le HTTP faʻatasi ai ma tulaga faʻaletonu (vaitaimi: 10 Sekona, uma le taimi: 1 sekone, tulaga manuia: 1, tulaga toilalo:3):

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

fautuaga

  1. Mo microservices ma HTTP endpoint (REST, etc.) fa'amatala i taimi uma se su'esu'ega saunia, lea e siaki pe ua sauni le talosaga (pod) e talia feoaiga.
  2. Ia mautinoa le saunia o su'esu'ega e aofia ai le maua o le tau web server moni:
    • fa'aaoga ports mo faamoemoega tau pulega, ua ta'ua o le "admin" po o le "pulea" (mo se faataitaiga, 9090), mo readinessProbe, ia mautinoa e naʻo le faʻaiʻuga e toe foʻi mai OK pe afai o le HTTP muamua port (pei o le 8080) ua sauni e talia fefaʻatauaiga *;

      *Ou te iloa e le itiiti ifo ma le tasi le mataupu i Zalando e leʻi tupu ai lenei mea, i.e. readinessProbe Na ou siakiina le taulaga "pulega", ae o le server lava ia e leʻi amata galue ona o faʻafitauli o loʻo faʻapipiʻiina le cache.

    • faʻapipiʻi se suʻesuʻega sauniuni i se isi taulaga e mafai ona oʻo atu ai i le mea moni o le tele o le uta i luga o le taulaga autu o le a le atagia i le siakiina o le soifua maloloina (o lona uiga, o le filo filo i luga o le server ua tumu, ae o le siakiina o le soifua maloloina o loʻo faʻaalia pea o loʻo lelei mea uma. ).
  3. Ia mautinoa lena mea saunia su'esu'e e mafai ai ona amata fa'amaumauga/malaga;
    • O le auala pito sili ona faigofie e ausia ai lenei mea o le faʻafesoʻotaʻi le HTTP server pe a maeʻa le amataina (mo se faʻataʻitaʻiga, faʻafeiloaʻi se database mai Auala lele ma faapena atu ai lava.); o lona uiga, nai lo le suia o le tulaga o le siakiina o le soifua maloloina, aua le amataina le upega tafaʻilagi seia maeʻa le femalagaiga o database *.

      * E mafai fo'i ona e fa'atautaia femalagaiga fa'amaumauga mai pusa init i fafo atu o le pod. O aʻu lava o se tagata fiafia i talosaga a le tagata lava ia, o lona uiga, o loʻo iloa e le pusa talosaga le auala e aumai ai le database i le tulaga manaʻomia e aunoa ma le faʻamaopoopoina mai fafo.

  4. Faaaoga httpGet mo su'esu'ega sauniuni e ala i fa'ai'uga masani o le siakiina o le soifua maloloina (mo se fa'ata'ita'iga, /health).
  5. Malamalama i fa'asologa o siaki fa'aletonu (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • o filifiliga fa'aletonu o lona uiga o le a avea le pod e le'i sauni pe a ma le 30 sekone (3 su'esu'ega ua le manuia).
  6. Fa'aaoga se isi uafu mo le "admin" po'o le "pulega" pe a fa'ataga e le fa'aputuga tekonolosi (eg Java/Spring), e tu'u'ese'ese ai le pulega o le soifua maloloina ma fua fa'atatau mai feoaiga masani:
    • ae aua nei galo le vaega 2.
  7. Afai e mana'omia, e mafai ona fa'aoga le su'esu'ega sauniuni e fa'amafanafanaina/mu'u ai le fa'aoga ma toe fa'afo'i se fa'ailoga 503 se'ia fa'amafanafana le koneteina:

Caveats

  1. Aua le fa'alagolago i fa'alagolago i fafo (pei o faleteuoloa faʻamaumauga) pe a faʻataʻitaʻiina le sauniuni / suʻega ola - e mafai ona taʻitaʻia ai le faʻaletonu:
    • Mo se faʻataʻitaʻiga, seʻi o tatou faia se 'auʻaunaga REST faʻamaonia ma 10 pods e faʻatatau i le tasi Postgres database: pe a faʻalagolago le siaki i se fesoʻotaʻiga galue i le DB, e mafai ona toilalo uma 10 pods pe a iai se tuai i luga o le upega tafailagi / DB itu - e masani lava. e i'u uma lava i le leaga nai lo le mea e mafai;
    • Fa'amolemole maitau o Spring Data e siaki le feso'ota'iga fa'amaumauga e ala i le fa'aletonu*;

      * Ole amio le lelei lea ole Spring Data Redis (o le mea sili o le taimi mulimuli lea na ou siaki ai), lea na mafua ai le toilalo "faʻalavelave": ina ua le maua le Redis, o pusa uma na "paʻu".

    • "fafo" i lenei uiga e mafai foi ona faauigaina isi pods o le talosaga lava e tasi, o lona uiga, o le siaki e le tatau ona faalagolago i le tulaga o isi pods o le fuifui lava e tasi e puipuia ai faʻalavelave faʻafuaseʻi:
      • e ono fesuisuia'i i'uga mo talosaga o lo'o fa'asoa fa'atasi (mo se fa'ata'ita'iga, fa'apipi'i i totonu o le manatua i pods).
  2. Aua le fa'aogaina se su'esu'ega ola mo pods (tuunoa o mataupu pe a manaʻomia moni ma e te nofouta atoatoa i faʻamatalaga ma taunuuga o lo latou faʻaaogaina):
    • O se su'esu'ega ola e mafai ona fesoasoani i le toe fa'aleleia o pusa o lo'o tautau, ae talu ai o lo'o ia te oe le fa'atonuga atoatoa o lau talosaga, o mea e pei o fa'agasolo fa'apipi'i ma tapuni e le tatau ona tupu: o le filifiliga sili o le ta'e ma le loto i ai o le talosaga ma toe fa'afo'i i le tulaga mautu;
    • o se su'esu'ega le manuia o le a mafua ai ona toe amata le atigipusa, ma mafai ai ona faʻateleina aʻafiaga o mea sese e fesoʻotaʻi ma taʻavale: toe faʻafouina le koneteina o le a iʻu ai i le taʻaloga (a itiiti ifo mo le umi o le amataga o le talosaga, fai mai 30+ sekone), mafua ai ni mea sese fou, faʻateleina le uta i luga o isi koneteina ma faʻateleina le ono mafai ona latou toilalo, ma isi;
    • O siaki ola fa'atasi ma le fa'alagolago i fafo o le tu'ufa'atasiga sili ona leaga, fa'amata'u fa'aletonu fa'aletonu: o sina tuai i le itu o fa'amaumauga o le a toe amata ai au koneteina uma!
  3. Parata o le ola ma le saunia o siaki e tatau ona ese:
    • e mafai ona e fa'aogaina se su'esu'ega fa'aola fa'atasi ma le siaki fa'alesoifua maloloina tutusa, ae maualuga atu le tali (failureThreshold), mo se faʻataʻitaʻiga, tofia le tulaga e le'i sauni ina ua uma le 3 taumafaiga ma mafaufau ua le manuia le su'esu'ega ola ina ua mavae le 10 taumafaiga;
  4. Aua le fa'aogaina siakiga, talu ai e fesoʻotaʻi ma faʻafitauli faʻapitoa e taʻitaʻia ai le faʻaalia o faiga zombie:

Aotelega

  • Fa'aaoga su'esu'ega sauniuni e iloa ai po'o afea ua sauni se pusa e maua ai feoaiga.
  • Fa'aaoga su'esu'e ola na'o le taimi lava e mana'omia ai.
  • Le fa'aogaina lelei o su'esu'ega sauniuni/ola e mafai ona fa'aititia ai le avanoa ma fa'aletonu fa'asolo.

O su'esu'ega ola i Kubernetes e mafai ona lamatia

Mea faʻaopoopo faʻaopoopo i le autu

Fa'afou Numera 1 mai le 2019-09-29

E uiga i pusa init mo femalaga'iga o fa'amaumauga: Ua faaopoopo le vaefaamatalaga.

Na faamanatu mai e EJ ia te au e uiga i le PDB: o se tasi o faʻafitauli i siaki ola o le leai o se faʻamaopoopo i le va o pods. Kubernetes ei ai Pod Disruption Budgets (PDB) e faʻatapulaʻa le aofaʻi o faʻaletonu faʻatasi e mafai ona oʻo i se talosaga, peitaʻi o siaki e le o amanaia le PDB. O le mea e sili ona lelei, e mafai ona matou fai atu K8s e "Toe toe amata le tasi pod pe a le manuia lana suʻega, ae aua le toe amataina uma e aloese ai mai le faʻaleagaina o mea."

Na fa'apena lelei e Bryan: “Fa'aaoga su'esu'ega ola pe a e iloa tonu le mea o le mea sili e fai o le tapeina o le talosaga"(toe foʻi, aua le faʻafefe).

O su'esu'ega ola i Kubernetes e mafai ona lamatia

Fa'afou Numera 2 mai le 2019-09-29

E tusa ai ma le faitauina o faʻamaumauga aʻo leʻi faʻaaogaina: Na ou faia le talosaga talafeagai (talosaga vaega) e fa'aopoopo fa'amaumauga e uiga i su'esu'ega ola.

PS mai faaliliu

Faitau foi i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga