Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

27 Aibreán ag an gcomhdháil Stailc 2019, mar chuid den rannán “DevOps”, tugadh an tuarascáil “Uathscálú agus bainistíocht acmhainní in Kubernetes”. Labhraíonn sé faoi conas is féidir leat K8anna a úsáid chun infhaighteacht ard d’fheidhmchláir a chinntiú agus buaicfheidhmíocht a chinntiú.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

De réir traidisiúin, tá áthas orainn a chur i láthair físeán den tuarascáil (44 nóiméad, i bhfad níos faisnéiseach ná an t-alt) agus an príomh achoimre i bhfoirm téacs. Téigh!

Déanaimis anailís ar ábhar na tuarascála focal ar fhocal agus tosú ón deireadh.

Kubernetes

Ligean le rá go bhfuil coimeádáin Docker againn ar ár n-óstach. I gcomhair Cad? Chun atrialltacht agus leithlisiú a chinntiú, rud a cheadaíonn imscaradh simplí agus maith, CI/CD. Tá go leor feithiclí den sórt sin againn le coimeádáin.

Cad a sholáthraíonn Kubernetes sa chás seo?

  1. Stopaimid ag smaoineamh ar na meaisíní seo agus tosaímid ag obair leis an “scamall” braisle coimeádán nó pods (grúpaí coimeádán).
  2. Ina theannta sin, ní fiú smaoineamh ar pods aonair, ach déanaimid bainistíocht ar níos móоgrúpaí níos mó. Den sórt sin primitives ardleibhéil lig dúinn a rá go bhfuil teimpléad ann chun ualach oibre áirithe a rith, agus anseo tá an líon cásanna riachtanacha chun é a rith. Má athraíonn muid an teimpléad ina dhiaidh sin, athrófar gach cás.
  3. Le API dearbhaithe In ionad seicheamh orduithe sonracha a fhorghníomhú, déanaimid cur síos ar “struchtúr an domhain” (i YAML), a chruthaigh Kubernetes. Agus arís: nuair a athraíonn an tuairisc, athrófar a thaispeáint iarbhír freisin.

Bainistíocht acmhainní

LAP

Lig dúinn nginx, php-fpm agus mysql a reáchtáil ar an bhfreastalaí. Beidh níos mó próiseas fós ag na seirbhísí seo, agus beidh acmhainní ríomhaireachta ag teastáil ó gach ceann díobh:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)
(is “parrots” iad na huimhreacha ar an sleamhnán, an gá teibí a bhaineann le gach próiseas le cumhacht ríomhaireachta)

Chun é a dhéanamh níos éasca oibriú leis seo, tá sé loighciúil próisis a chomhcheangal i ngrúpaí (mar shampla, gach próiseas nginx i ngrúpa amháin “nginx”). Bealach simplí soiléir é seo a dhéanamh ná gach grúpa a chur i gcoimeádán:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Chun leanúint ar aghaidh, ní mór duit cuimhneamh ar cad is coimeádán ann (i Linux). Rinneadh a gcuma a bhuíochas le trí phríomhghné san eithne, a cuireadh i bhfeidhm i bhfad ó shin: cumais, spásanna ainmneacha и cgroups. Agus d’éascaigh teicneolaíochtaí eile tuilleadh forbartha (lena n-áirítear “sliogáin” áisiúla cosúil le Docker):

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

I gcomhthéacs na tuarascála, níl ach suim againn ann cgroups, toisc go bhfuil grúpaí rialaithe mar chuid den fheidhmiúlacht coimeádán (Docker, etc.) a chuireann bainistíocht acmhainní i bhfeidhm. Is grúpaí rialaithe iad próisis arna gcomhcheangal i ngrúpaí, mar a theastaigh uainn.

Fillfimid ar na riachtanais LAP do na próisis seo, agus anois do ghrúpaí próiseas:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)
(Díreach liom gur léiriú teibí iad na huimhreacha ar fad ar an ngá atá le hacmhainní)

Ag an am céanna, tá acmhainn teoranta áirithe ag an LAP féin (sa sampla is é seo 1000), rud a d’fhéadfadh easpa a bheith ag gach duine (is é suim riachtanais na ngrúpaí go léir ná 150+850+460=1460). Cad a tharlóidh sa chás seo?

Tosaíonn an t-eithne ag dáileadh acmhainní agus déanann sé é “go cothrom”, ag tabhairt an méid céanna acmhainní do gach grúpa. Ach sa chéad chás, tá níos mó acu ná mar is gá (333> 150), mar sin tá an farasbarr (333-150 = 183) fós sa chúlchiste, a dháileadh go cothrom idir dhá choimeádán eile freisin:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Mar thoradh air sin: bhí go leor acmhainní ag an gcéad choimeádán, an dara ceann - ní raibh go leor acmhainní aige, an tríú ceann - ní raibh go leor acmhainní aige. Tá sé seo mar thoradh ar ghníomhartha sceidealóir "macánta" i Linux - CFS. Is féidir a oibriú a choigeartú ag baint úsáide as an tasc meáchain gach ceann de na coimeádáin. Mar shampla, mar seo:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Breathnaímid ar an gcás go bhfuil easpa acmhainní sa dara coimeádán (php-fpm). Déantar na hacmhainní coimeádáin go léir a dháileadh go cothrom idir próisis. Mar thoradh air sin, oibríonn an máistirphróiseas go maith, ach moillíonn gach oibrí, ag fáil níos lú ná leath de na rudaí a theastaíonn uathu:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Seo mar a oibríonn an sceidealóir CFS. Cuirfimid tuilleadh glaoch ar na meáchain a sannaimid do choimeádáin iarratais. Cén fáth go bhfuil sé seo amhlaidh - féach tuilleadh.

Breathnaímid ar an staid iomlán ón taobh eile. Mar is eol duit, téann gach bóthar go dtí an Róimh, agus i gcás ríomhaire, chuig an LAP. LAP amháin, go leor tascanna - is gá duit solas tráchta. Is é an bealach is simplí chun acmhainní a bhainistiú ná “solas tráchta”: thug siad am rochtana seasta ar an LAP do phróiseas amháin, ansin don chéad cheann eile, etc.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Tugtar cuótaí crua ar an gcur chuige seo (teorannú crua). A ligean ar cuimhneamh air go simplí mar teorainneacha. Mar sin féin, má dháileann tú teorainneacha ar na coimeádáin go léir, tagann fadhb chun cinn: bhí mysql ag tiomáint feadh an bhóthair agus ag pointe éigin tháinig deireadh lena riachtanas le LAP, ach tá iallach ar gach próiseas eile fanacht go dtí an LAP. díomhaoin.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Fillfimid ar an eithne Linux agus a idirghníomhaíocht leis an LAP - is é seo a leanas an pictiúr iomlán:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Tá dhá shocrú ag cgroup - go bunúsach is dhá “throid” simplí iad seo a ligeann duit a chinneadh:

  1. meáchan le haghaidh coimeádán (iarratais). scaireanna;
  2. Is é an céatadán den am LAP iomlán chun oibriú ar thascanna coimeádáin (teorainneacha). scair.

Conas LAP a thomhas?

Tá bealaí éagsúla ann:

  1. Cad é parrots, níl a fhios ag aon duine - ní mór duit dul i mbun caibidlíochta gach uair.
  2. Ús níos soiléire, ach i gcoibhneas: is rudaí go hiomlán difriúil iad 50% de fhreastalaí le 4 chroílár agus le 20 croí.
  3. Is féidir leat na cinn atá luaite cheana féin a úsáid meáchain, a bhfuil a fhios ag Linux, ach tá siad coibhneasta freisin.
  4. Is é an rogha is leordhóthanach acmhainní ríomhaireachta a thomhas i soicind. Iad siúd. i soicindí d'am próiseálaí i gcoibhneas le soicind fíor-ama: tugadh 1 soicind d'am próiseálaí in aghaidh 1 soicind fíor - is é seo croí amháin LAP iomlán.

Chun é a dhéanamh níos éasca fós a labhairt, thosaigh siad ag tomhas go díreach isteach eithne, rud a chiallaíonn an t-am LAP céanna acu i gcomparáid leis an gceann fíor. Ós rud é go dtuigeann Linux meáchain, ach nach bhfuil an oiread sin ama LAP/cores, bhí gá le meicníocht chun aistriú ó cheann go chéile.

Déanaimis sampla simplí a mheas le freastalaí le 3 chroílár LAP, áit a dtabharfar meáchain do thrí pods (500, 1000 agus 1500) a thiontú go héasca chuig na codanna comhfhreagracha de na croíleacáin a leithdháiltear orthu (0,5, 1 agus 1,5).

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Má ghlacann tú an dara freastalaí, áit a mbeidh dhá oiread croíleacáin (6), agus má chuireann tú na pods céanna ann, is féidir dáileadh na gcroíthe a ríomh go héasca ach iad a iolrú faoi 2 (1, 2 agus 3, faoi seach). Ach tarlaíonn nóiméad tábhachtach nuair a bhíonn ceathrú pod le feiceáil ar an bhfreastalaí seo, a mbeidh a mheáchan, mar áis, 3000. Tógann sé cuid de na hacmhainní LAP (leath na gcroí), agus do na pods atá fágtha déantar iad a athríomh (leath):

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Kubernetes agus acmhainní LAP

I Kubernetes, déantar acmhainní LAP a thomhas de ghnáth i milliadrax, i.e. Glactar 0,001 croíthe mar an bonnmheáchan. (Tugtar sciar LAP ar an rud céanna i dtéarmaíocht Linux/cgroups, cé go bhfuil, níos cruinne, 1000 millicores = 1024 scaireanna LAP.) Cinntíonn K8s nach gcuireann sé níos mó pods ar an bhfreastalaí ná mar atá acmhainní LAP do shuim meáchain gach pods.

Conas a tharlaíonn sé seo? Nuair a chuireann tú freastalaí le braisle Kubernetes, tuairiscítear cé mhéad cores CPU atá ar fáil aige. Agus pod nua á chruthú aige, tá a fhios ag an sceidealóir Kubernetes cé mhéad croíleacan a bheidh ag teastáil ón pod seo. Mar sin, sannfar an pod do fhreastalaí ina bhfuil go leor croíleacáin.

Cad a tharlóidh má aon an bhfuil an t-iarratas sonraithe (i.e. níl líon sainithe croíleacáin a theastaíonn ag an pod)? Déanaimis amach conas a chomhaireamh Kubernetes acmhainní go ginearálta.

Le haghaidh pod is féidir leat an dá iarratas (sceidealóir CFS) agus teorainneacha a shonrú (cuimhnigh an solas tráchta?):

  • Má shonraítear iad cothrom, ansin sanntar rang QoS don phod ráthaithe. Tá an líon croíleacáin seo atá ar fáil dó i gcónaí ráthaithe.
  • Má tá an t-iarratas níos lú ná an teorainn - QoS rang pléasctha. Iad siúd. Táimid ag súil go n-úsáidfidh pod, mar shampla, 1 chroí i gcónaí, ach ní teorainn é an luach seo: uaireanta is féidir le pod níos mó a úsáid (nuair a bhíonn acmhainní saor in aisce ag an bhfreastalaí chuige seo).
  • Tá rang QoS ann freisin an iarracht is fearr — folaíonn sé na pods sin nach bhfuil iarratas sonraithe ina leith. Tugtar acmhainní dóibh go deireanach.

Память

Le cuimhne, tá an scéal cosúil, ach beagán difriúil - tar éis an tsaoil, tá nádúr na n-acmhainní seo difriúil. Go ginearálta, is é seo a leanas an t-analaí:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

A ligean ar a fheiceáil conas a iarratais i bhfeidhm i gcuimhne. Lig do na pods maireachtáil ar an bhfreastalaí, ag athrú tomhaltas cuimhne, go dtí go n-éiríonn duine acu chomh mór sin go n-imíonn sé as cuimhne. Sa chás seo, feictear an killer OOM agus maraíonn sé an próiseas is mó:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Ní oireann sé seo dúinn i gcónaí, mar sin is féidir a rialáil cé na próisis atá tábhachtach dúinn agus nár cheart a mharú. Chun seo a dhéanamh, bain úsáid as an paraiméadar oom_scór_adj.

Fillfimid ar ranganna QoS an LAP agus tarraingímid analaí leis na luachanna oom_score_adj a chinneann tosaíochtaí tomhaltais cuimhne le haghaidh pods:

  • Ciallaíonn an luach oom_score_adj is ísle le haghaidh pod - -998 - gur cheart a leithéid de pod a mharú ar deireadh, seo ráthaithe.
  • Is é an líon is airde - 1000 - an iarracht is fearr, maraítear pods den sórt sin ar dtús.
  • Chun na luachanna atá fágtha a ríomh (pléasctha) tá foirmle ann, arb é is bunús léi ná gurb amhlaidh dá mhéad acmhainní a d’iarr pod, is lú an seans go marófar é.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

An dara "twist" - teorainn_i_bearta - le haghaidh teorainneacha. Leis, tá gach rud níos simplí: ní dhéanaimid ach an t-uasmhéid cuimhne eisithe a shannadh, agus anseo (murab ionann agus an LAP) níl aon cheist maidir le conas é a thomhas (cuimhne).

Ar an iomlán

Tugtar gach pod i Kubernetes requests и limits - paraiméadair LAP agus cuimhne araon:

  1. bunaithe ar iarratais, oibríonn an sceidealóir Kubernetes, a dháileann pods i measc freastalaithe;
  2. bunaithe ar na paraiméadair go léir, déantar rang QoS an pod a chinneadh;
  3. Ríomhtar meáchain choibhneasta bunaithe ar iarratais LAP;
  4. tá an sceidealóir CFS cumraithe bunaithe ar iarratais LAP;
  5. Tá OOM killer cumraithe bunaithe ar iarratais chuimhne;
  6. tá “solas tráchta” cumraithe bunaithe ar theorainneacha LAP;
  7. Bunaithe ar theorainneacha cuimhne, tá teorainn cumraithe don cgroup.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Go ginearálta, freagraíonn an pictiúr seo na ceisteanna go léir faoin gcaoi a dtarlaíonn an phríomhchuid de bhainistíocht acmhainní i Kubernetes.

Uathscálú

K8s braisle-uathscálar

Samhlóimid go bhfuil an braisle ar fad áitithe cheana féin agus ní mór pod nua a chruthú. Cé nach féidir leis an pod a bheith le feiceáil, tá sé hang i stádas Ar feitheamh. Le go mbeidh sé le feiceáil, is féidir linn freastalaí nua a nascadh leis an mbraisle nó... cluster-autoscaler a shuiteáil, rud a dhéanfaidh dúinn é: ordú meaisín fíorúil ón soláthraí néal (ag baint úsáide as iarratas API) agus é a nascadh leis an mbraisle , ina dhiaidh sin cuirfear an pod leis.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Is é seo uathscálú braisle Kubernetes, a oibríonn go hiontach (inár dtaithí). Ach, mar atá in áiteanna eile, tá roinnt nuances anseo ...

Chomh fada agus a mhéadaigh muid an méid braisle, bhí gach rud go breá, ach cad a tharlaíonn nuair a bhíonn an braisle thosaigh sé é féin a shaoradh? Is í an fhadhb atá ann go bhfuil pods imirce (chun hóstach a shaoradh) an-deacair go teicniúil agus ó thaobh acmhainní de. Úsáideann Kubernetes cur chuige go hiomlán difriúil.

Smaoinigh ar bhraisle 3 fhreastalaí a bhfuil Imscaradh acu. Tá sé pods: anois tá 6 do gach freastalaí. Ar chúis éigin bhíomar ag iarraidh ceann de na freastalaithe a mhúchadh. Chun seo a dhéanamh úsáidfimid an t-ordú kubectl drain, atá:

  • toirmeascfaidh sé pods nua a sheoladh chuig an bhfreastalaí seo;
  • scriosfaidh sé na pods atá ar an bhfreastalaí.

Ós rud é go bhfuil Kubernetes freagrach as líon na pods (6) a chothabháil, go simplí é athchruthóidh iad ar nóid eile, ach ní ar an gceann atá faoi mhíchumas, ós rud é go bhfuil sé marcáilte cheana féin mar nach bhfuil ar fáil chun pods nua a óstáil. Meicneoir bunúsach é seo do Kubernetes.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Mar sin féin, tá nuance anseo freisin. I gcás comhchosúil, i gcás StatefulSet (seachas Imscaradh), beidh na gníomhartha difriúil. Anois tá iarratas stáit againn cheana féin - mar shampla, trí pods le MongoDB, agus tá fadhb de chineál éigin ag ceann acu (tá na sonraí truaillithe nó earráid eile a chuireann cosc ​​ar an pod tosú i gceart). Agus socraímid arís freastalaí amháin a dhíchumasú. Cad a tharlóidh?

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

MongoDB fhéadfadh bás mar go dteastaíonn córam uaidh: i gcás braisle de thrí suiteálacha, caithfidh dhá cheann ar a laghad feidhmiú. Mar sin féin, seo nach bhfuil ag tarlú - a bhuíochas sin do PodDisruptionBuiséad. Cinneann an paraiméadar seo an t-íoslíon pods oibre a theastaíonn. A fhios agam nach bhfuil ceann de na pods MongoDB ag obair a thuilleadh, agus féachaint go bhfuil PodDisruptionBudget socraithe do MongoDB minAvailable: 2, Ní cheadóidh Kubernetes duit pod a scriosadh.

Bottom line: chun go n-oibreoidh gluaiseacht (agus go deimhin, athchruthú) na pods nuair a scaoiltear an braisle, is gá PodDisruptionBudget a chumrú.

Scálú cothrománach

Déanaimis machnamh ar chás eile. Tá feidhmchlár á rith mar Imscaradh in Kubernetes. Tagann trácht úsáideora ar a pods (mar shampla, tá trí cinn acu), agus déanaimid táscaire áirithe a thomhas iontu (abair, ualach LAP). Nuair a mhéadaíonn an t-ualach, déanaimid é seo a thaifeadadh ar sceideal agus méadóimid líon na pods chun iarratais a dháileadh.

Sa lá atá inniu ann i Kubernetes ní gá é seo a dhéanamh de láimh: déantar méadú / laghdú uathoibríoch ar líon na pods a chumrú ag brath ar luachanna na dtáscairí ualaigh tomhaiste.

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Is iad na príomhcheisteanna anseo: cad é go díreach a thomhas и conas a léirmhíniú luachanna a fhaightear (chun cinneadh a dhéanamh maidir le líon na pods a athrú). Is féidir leat a lán a thomhas:

Uathscálú agus bainistíocht acmhainní in Kubernetes (tuairisc athbhreithnithe agus físeáin)

Conas é seo a dhéanamh go teicniúil - méadracht a bhailiú, etc. — Labhair mé go mion sa tuarascáil faoi Monatóireacht agus Kubernetes. Agus is é an príomhchomhairle maidir leis na paraiméadair is fearr a roghnú turgnamh!

ÚSÁID modh (Sáithiú Úsáide agus Earráidí), a bhfuil a bhrí mar seo a leanas. Cén bunús a bhfuil ciall le scála, mar shampla, php-fpm? Bunaithe ar an bhfíric go bhfuil oibrithe ag rith amach, tá sé seo úsáid. Agus má tá na hoibrithe thart agus nach nglactar le naisc nua, tá sé seo cheana féin saturation. Ní mór an dá pharaiméadar seo a thomhas, agus ag brath ar na luachanna, ní mór scálaithe a dhéanamh.

In ionad a thabhairt i gcrích

Tá leanúint leis an tuarascáil: faoi scálú ingearach agus conas na hacmhainní cearta a roghnú. Labhróidh mé faoi seo i bhfíseáin amach anseo ar ár YouTube - liostáil ionas nach gcaillfidh tú amach!

Físeáin agus sleamhnáin

Físeán ón léiriú (44 nóiméad):

Cur i láthair na tuarascála:

PS

Tuarascálacha eile faoi Kubernetes ar ár mblag:

Foinse: will.com

Add a comment