Is féidir le tóireadóirí beocht i Kubernetes a bheith contúirteach

Nóta. aistrigh.: Thug an t-innealtóir luaidhe ó Zalando, Henning Jacobs, faoi deara arís agus arís eile fadhbanna i measc úsáideoirí Kubernetes maidir le tuiscint a fháil ar chuspóir beocht (agus ullmhacht) tóireadóirí agus a n-úsáid cheart. Mar sin, bhailigh sé a chuid smaointe sa nóta capacious seo, a bheidh ar deireadh thiar mar chuid de na doiciméid K8s.

Is féidir le tóireadóirí beocht i Kubernetes a bheith contúirteach

Seiceálacha sláinte, ar a dtugtar i Kubernetes mar taiscéalaithe beocht (i.e., go litriúil, “tástálacha inmharthanachta” - thart ar. transl.), a bheith contúirteach go leor. Molaim iad a sheachaint más féidir: is iad na heisceachtaí amháin ná nuair a bhíonn siad fíor-riachtanach agus go dtuigeann tú go hiomlán na sonraí agus na hiarmhairtí a bhaineann lena n-úsáid. Labhróidh an foilseachán seo ar bheocht agus ar sheiceálacha ullmhachta, agus inseoidh sé duit freisin cad iad na cásanna Is é agus níor cheart duit iad a úsáid.

Roinn mo chomhghleacaí Sandor le déanaí ar Twitter na hearráidí is coitianta a bhíonn aige, lena n-áirítear iad siúd a bhaineann le húsáid tóireadóirí ullmhachta/beo:

Is féidir le tóireadóirí beocht i Kubernetes a bheith contúirteach

Cumraithe go mícheart livenessProbe is féidir leis cásanna ard-ualaigh a dhéanamh níos measa (múchadh liathróid sneachta + coimeádán a d’fhéadfadh a bheith fada / am tosaithe feidhmchláir) agus iarmhairtí diúltacha eile a bheith mar thoradh air amhail braite spleáchais (Féach freisin mo alt le déanaí maidir le líon na n-iarratas a theorannú sa teaglaim K3s+ACME). Tá sé níos measa fós nuair a chomhcheanglaítear an taiscéalaí beocht le seiceáil sláinte, ar bunachar sonraí seachtrach é: Déanfaidh teip DB amháin do choimeádáin go léir a atosú!

Teachtaireacht ghinearálta "Ná húsáid taiscéalaithe beocht" sa chás seo ní cuidíonn sé go mór, mar sin déanaimis féachaint ar cad atá i gceist leis na seiceálacha ullmhachta agus beocht.

Nóta: Áiríodh an chuid is mó den tástáil thíos i ndoiciméadú forbróra inmheánach Zalando ar dtús.

Seiceálacha ullmhachta agus beo

Soláthraíonn Kubernetes dhá mheicníocht thábhachtach ar a dtugtar tóireadóirí beocht agus taiscéalaithe ullmhachta. Déanann siad gníomh éigin go tréimhsiúil - mar shampla iarratas HTTP a sheoladh, nasc TCP a oscailt, nó ordú a fhorghníomhú sa choimeádán - chun a dhearbhú go bhfuil an feidhmchlár ag obair mar a bhíothas ag súil leis.

Úsáideann Kubernetes taiscéalaithe ullmhachtaa thuiscint nuair a bhíonn an coimeádán réidh le trácht a ghlacadh. Meastar go bhfuil pod réidh le húsáid má tá a choimeádáin go léir réidh. Úsáid amháin a bhaintear as an meicníocht seo ná rialú a dhéanamh ar na pods a úsáidtear mar chúláin do sheirbhísí Kubernetes (agus go háirithe Ingress).

Taiscéalaithe beocht cabhrú le Kubernetes a thuiscint nuair a bhíonn sé in am an coimeádán a atosú. Mar shampla, cuireann seiceáil den sórt sin ar do chumas bac a chur ar achrann nuair a théann feidhmchlár i bhfostú in aon áit amháin. Cuidíonn an coimeádán a atosú sa stát seo an t-iarratas a bhaint den talamh in ainneoin earráidí, ach is féidir teipeanna cascáideacha a bheith mar thoradh air freisin (féach thíos).

Má dhéanann tú iarracht nuashonrú feidhmchláir a imscaradh a dteipeann ar na seiceálacha beocht/ullmhachta, cuirfear stop lena rolladh amach agus Kubernetes ag fanacht ar an stádas Ready ó gach pods.

Sampla

Seo sampla de thaiscéalaí ullmhachta ag seiceáil cosán /health trí HTTP le socruithe réamhshocraithe (eatramh: 10 Soicind, Teorainn ama: 1 soicind, tairseach ratha: 1, tairseach teip:3):

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

Moltaí

  1. Le haghaidh micreasheirbhísí le críochphointe HTTP (REST, etc.) sainmhínigh i gcónaí taiscéalaí ullmhachta, a sheiceálann an bhfuil an t-iarratas (pod) réidh le glacadh le trácht.
  2. Bí cinnte go bhfuil an taiscéalaí ullmhachta clúdaíonn sé infhaighteacht an chalafoirt fhreastalaí gréasáin iarbhír:
    • úsáid a bhaint as calafoirt chun críocha riaracháin, ar a dtugtar "riarachán" nó "bainistíocht" (mar shampla, 9090), le haghaidh readinessProbe, cinntigh nach bhfilleann an críochphointe ceart go leor ach amháin má tá an príomhchalafort HTTP (cosúil le 8080) réidh le glacadh le trácht*;

      *Tá mé ar an eolas faoi chás amháin ar a laghad in Zalando nár tharla sé sin, i.e. readinessProbe Sheiceáil mé an port "bainistíochta", ach níor thosaigh an freastalaí féin ag obair mar gheall ar fhadhbanna le luchtú an taisce.

    • d'fhéadfadh sé nach mbeadh an ró-ualach ar an bpríomhchalafort le sonrú sa seiceáil sláinte (is é sin, an linn snáithe ar an bhfreastalaí lán, ach léiríonn an seiceáil sláinte fós go bhfuil gach rud ceart go leor). ).
  3. Déan cinnte go Cumasaíonn taiscéalaí ullmhachta bunú/aistriú bunachar sonraí;
    • Is é an bealach is fusa chun é seo a bhaint amach ná dul i dteagmháil leis an bhfreastalaí HTTP ach amháin tar éis an tosaithe a bheith críochnaithe (mar shampla, bunachar sonraí a aistriú ó Eitilt agus mar sin de.); is é sin, in ionad an stádas seiceála sláinte a athrú, ná cuir tús leis an bhfreastalaí gréasáin go dtí go mbeidh aistriú an bhunachair sonraí críochnaithe*.

      * Is féidir leat ascnaimh bhunachar sonraí a rith ó choimeádáin init lasmuigh den phod freisin. Tá mé fós ina lucht leanúna d'iarratais féinchuimsitheacha, is é sin, iad siúd a bhfuil a fhios ag coimeádán an iarratais conas an bunachar sonraí a thabhairt isteach sa stát atá ag teastáil gan comhordú seachtrach.

  4. Bain úsáid as httpGet le haghaidh seiceálacha ullmhachta trí chríochphointí tipiciúla seiceála sláinte (mar shampla, /health).
  5. Na paraiméadair seiceála réamhshocraithe a thuiscint (interval: 10s, timeout: 1s, successThreshold: 1, failureThreshold: 3):
    • ciallaíonn na roghanna réamhshocraithe go dtiocfaidh an pod neamh-réidh tar éis thart ar 30 soicind (3 seiceáil shláintíochta theip).
  6. Bain úsáid as port ar leith le haghaidh "riarachán" nó "bainistíocht" má cheadaíonn an chairn teicneolaíochta (m.sh. Java/Earraigh) é, chun bainistíocht sláinte agus méadrachta a scaradh ó thrácht rialta:
    • ach ná déan dearmad faoi phointe 2.
  7. Más gá, is féidir an taiscéalaí ullmhachta a úsáid chun an taisce a théamh/lódáil agus cód stádais 503 a chur ar ais go dtí go mbíonn an coimeádán te suas:

Caveats

  1. Ná bí ag brath ar spleáchais sheachtracha (cosúil le stórais sonraí) agus tástálacha ullmhachta/beotha ar siúl - d’fhéadfadh teipeanna cascáideacha a bheith mar thoradh air seo:
    • Mar shampla, déanaimis seirbhís státmhar REST le 10 pod ag brath ar bhunachar sonraí Postgres amháin: nuair a bhraitheann an tseiceáil ar nasc oibre leis an DB, seans go dteipfidh ar na 10 pods ar fad má bhíonn moill ar thaobh an líonra/DB - de ghnáth é. gach deireadh níos measa ná mar a d'fhéadfadh sé;
    • Tabhair faoi deara le do thoil go seiceálann Spring Data nasc an bhunachair shonraí de réir réamhshocraithe*;

      * Is é seo an t-iompar réamhshocraithe de Spring Data Redis (ar a laghad ba é an uair dheireanach a sheiceáil mé), rud a d'eascair teip "tubaisteach": nuair nach raibh Redis ar fáil ar feadh tréimhse ghearr, tháinig na pods go léir "timpiste".

    • Is féidir le “seachtrach” sa chiall seo a bheith i gceist freisin le pods eile den fheidhm chéanna, is é sin, go hidéalach níor cheart go mbeadh an tseiceáil ag brath ar staid pods eile den bhraisle chéanna chun tuairteanna cascáideacha a chosc:
      • féadfaidh na torthaí a bheith éagsúil le haghaidh iarratas le staid dháilte (mar shampla, taisce i gcuimhne i gcodáin).
  2. Ná húsáid taiscéalaí beocht le haghaidh pods (is eisceachtaí iad cásanna nuair a bhíonn siad fíor-riachtanach agus go dtuigeann tú go hiomlán na sonraí agus na hiarmhairtí a bhaineann lena n-úsáid):
    • Is féidir le taiscéalaí beocht cuidiú le coimeádáin ar crochadh a aisghabháil, ach ós rud é go bhfuil smacht iomlán agat ar d'iarratas, níor cheart go n-éireodh rudaí cosúil le próisis crochta agus glasáin ghlasa: is é an rogha is fearr an feidhmchlár a thuairteáil d'aon ghnó agus é a thabhairt ar ais go dtí staid sheasta roimhe sin;
    • beidh an coimeádán ina chúis le taiscéalaí slite teipthe, rud a d'fhéadfadh iarmhairtí earráidí a bhaineann le luchtú a dhéanamh níos measa: beidh aga neamhfhónaimh mar thoradh ar atosú an choimeádáin (ar feadh ré tosaithe an fheidhmchláir ar a laghad, abair 30 soicind), rud a chruthóidh earráidí nua , an t-ualach ar choimeádáin eile a mhéadú agus an dóchúlacht go dtarlóidh a dteip, etc .;
    • is iad seiceálacha beo agus spleáchais sheachtrach an meascán is measa is féidir, ag bagairt ar theipeanna cascáideacha: de bharr moill bheag ar thaobh an bhunachair shonraí, déanfar do choimeádáin go léir a atosú!
  3. Paraiméadair seiceálacha beocht agus ullmhachta Ní mór a bheith difriúil:
    • is féidir leat taiscéalaí beocht a úsáid leis an seiceáil sláinte céanna, ach tairseach freagartha níos airde (failureThreshold), mar shampla, an stádas a shannadh neamh-réidh tar éis 3 iarracht agus a mheas gur theip ar an taiscéalaí beocht tar éis 10 n-iarracht;
  4. Ná húsáid seiceálacha exec, ós rud é go bhfuil baint acu le fadhbanna aitheanta as a dtagann próisis zombie:

Achoimre

  • Bain úsáid as taiscéalaithe ullmhachta le fáil amach an bhfuil pod réidh chun trácht a fháil.
  • Bain úsáid as tóireadóirí beocht ach amháin nuair a bhíonn géarghá leo.
  • Is féidir le hinfhaighteacht laghdaithe agus teipeanna cascáideacha a bheith mar thoradh ar úsáid mhíchuí taiscéalaithe ullmhachta/beo.

Is féidir le tóireadóirí beocht i Kubernetes a bheith contúirteach

Ábhair bhreise ar an topaic

Nuashonrú Uimh. 1 ó 2019-09-29

Maidir le coimeádáin init le haghaidh aistriú bunachar sonraí: fonóta curtha leis.

Chuir EJ i gcuimhne dom faoi ​​PDB: ceann de na fadhbanna le seiceálacha beocht is ea an easpa comhordaithe idir na pods. Tá Kubernetes Buiséid Cur isteach Pod (PDB) chun teorainn a chur le líon na dteipeanna comhthráthacha a d’fhéadfadh a bheith ag iarratas, ní chuireann na seiceálacha an BFC san áireamh áfach. Go hidéalach, d'fhéadfaimis a rá le K8s "pod amháin a atosú má theipeann ar a thástáil, ach ná déan iad go léir a atosú chun rudaí a dhéanamh níos measa a sheachaint."

Chuir Bryan go foirfe é: “Bain úsáid as iniúchadh beocht nuair atá a fhios agat cad go díreach is é an rud is fearr le déanamh ná an feidhmchlár a mharú“(arís, ná tóg leat).

Is féidir le tóireadóirí beocht i Kubernetes a bheith contúirteach

Nuashonrú Uimh. 2 ó 2019-09-29

Maidir leis an doiciméadú a léamh roimh úsáid: chruthaigh mé an t-iarratas comhfhreagrach (iarraidh gné) doiciméadú a chur isteach maidir le taiscéalaithe beocht.

PS ó aistritheoir

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment