Cúigear a chailleann nuair a bhí an chéad iarratas á imscaradh ar Kubernetes

Cúigear a chailleann nuair a bhí an chéad iarratas á imscaradh ar KubernetesTeip ag Aris Dreamer

Síleann go leor daoine go bhfuil sé go leor an t-iarratas a aistriú chuig Kubernetes (ceachtar ag baint úsáide as Helm nó de láimh) - agus beidh sonas ann. Ach nach bhfuil gach rud chomh simplí.

Foireann Mail.ru Cloud Solutions d'aistrigh Julian Gindy, innealtóir DevOps, alt. Insíonn sé cad iad na gaistí atá le sárú ag a chuideachta le linn an phróisis imirce ionas nach mbeidh tú ag dul ar an raic chéanna.

Céim a hAon: Socrú Iarratais Pod agus Teorainneacha

Tosaímid trí thimpeallacht ghlan a bhunú ina stiúrfaidh ár gcuid pods. Tá Kubernetes iontach ag sceidealú pod agus gan teip. Ach tharla sé nach féidir leis an sceidealóir pod a chur uaireanta má tá sé deacair a mheas cé mhéad acmhainní a theastaíonn uaidh chun oibriú go rathúil. Seo nuair a thagann iarratais ar acmhainní agus teorainneacha aníos. Tá go leor díospóireachta ar siúl faoin gcur chuige is fearr chun iarratais agus teorainneacha a shocrú. Uaireanta is cosúil go bhfuil sé seo i ndáiríre níos mó de ealaín ná eolaíocht. Seo é ár gcur chuige.

Iarratais pod is é an príomhluach a úsáideann an sceidealóir chun an pod a shuíomh go barrmhaith.

As Doiciméid Kubernetes: Sainmhíníonn an chéim scagaire sraith nóid inar féidir Pod a sceidealú. Mar shampla, seiceálann an scagaire PodFitsResources féachaint an bhfuil dóthain acmhainní ag nód chun iarratais ar acmhainní sonracha ó phod a shásamh.

Bainimid úsáid as iarratais iarratais sa chaoi is gur féidir linn a mheas cé mhéad acmhainní i ndáiríre Teastaíonn ón bhfeidhmchlár go bhfeidhmeoidh sé i gceart. Ar an mbealach seo is féidir leis an sceidealóir na nóid a chur go réalaíoch. Ar dtús, bhíomar ag iarraidh ró-sceidealú a dhéanamh ar iarratais chun go leor acmhainní a chinntiú do gach Pod, ach thugamar faoi deara gur mhéadaigh an t-am sceidealaithe go suntasach, agus nach raibh roinnt Podanna sceidealta go hiomlán, amhail is nach raibh aon iarratais acmhainne ann dóibh.

Sa chás seo, is minic a bheadh ​​an sceidealóir "ag brú amach" na pods agus ní bheadh ​​​​sé in ann iad a athsceidealú toisc nach raibh aon smaoineamh ag an eitleán rialaithe cé mhéad acmhainní a bheadh ​​de dhíth ar an bhfeidhmchlár, rud atá ina phríomhchuid den algartam sceidealaithe.

Teorainneacha pod teorainn níos soiléire le haghaidh pod. Léiríonn sé an t-uasmhéid acmhainní a leithdháilfidh an braisle ar an gcoimeádán.

Arís, ó doiciméadú oifigiúil: Má tá teorainn chuimhne de 4 GiB ag coimeádán, ansin déanfaidh an kubelet (agus am rite an choimeádáin) é a fhorghníomhú. Cuireann an t-am rite cosc ​​ar an gcoimeádán níos mó ná an teorainn acmhainní sonraithe a úsáid. Mar shampla, nuair a dhéanann próiseas i gcoimeádán iarracht níos mó ná an méid cuimhne ceadaithe a úsáid, cuireann eithne an chórais deireadh leis an bpróiseas le hearráid "as cuimhne" (OOM).

Is féidir le coimeádán níos mó acmhainní a úsáid i gcónaí ná mar a shonraítear san iarratas acmhainne, ach ní féidir leis níos mó ná an teorainn a úsáid choíche. Is deacair an luach seo a shocrú i gceart, ach tá sé an-tábhachtach.

Go hidéalach, ba mhaith linn riachtanais acmhainne pod a athrú le linn shaolré an phróisis gan cur isteach ar phróisis eile sa chóras - is é seo an cuspóir atá le teorainneacha a leagan síos.

Ar an drochuair, ní féidir liom treoracha sonracha a thabhairt ar na luachanna atá le socrú, ach táimid féin ag cloí leis na rialacha seo a leanas:

  1. Ag baint úsáide as uirlis tástála ualaigh, déanaimid insamhladh ar bhunleibhéal tráchta agus breathnaíonn muid ar úsáid acmhainní pod (cuimhne agus próiseálaí).
  2. Socraigh na hiarratais pod ar luach treallach íseal (le teorainn acmhainne de thart ar 5 oiread luach na n-iarratas) agus breathnú. Nuair a bhíonn iarratais ar leibhéal ró-íseal, ní féidir tús a chur leis an bpróiseas, rud is minic a chruthaíonn earráidí am rite criptí Go.

Tugaim faoi deara go ndéanann teorainneacha acmhainní níos airde an sceidealú níos deacra mar go bhfuil nód sprice ag teastáil ón pod le go leor acmhainní ar fáil.

Samhlaigh cás ina bhfuil freastalaí gréasáin éadrom agat le teorainn acmhainní an-ard, cosúil le 4 GB de chuimhne. Is dócha go mbeidh gá leis an bpróiseas seo a scála amach go cothrománach, agus beidh gá le gach pod nua a sceidealú ar nód le 4 GB ar a laghad de chuimhne atá ar fáil. Mura bhfuil nód den sórt sin ann, ní mór don bhraisle nód nua a thabhairt isteach chun an pod seo a phróiseáil, rud a d’fhéadfadh roinnt ama a ghlacadh. Tá sé tábhachtach íosdifríocht a bhaint amach idir iarratais ar acmhainní agus teorainneacha chun scálú tapa agus rianúil a áirithiú.

Céim a Dó: Tástálacha Beo agus Ullmhachta a Shocrú

Is ábhar subtle eile é seo a phléitear go minic i bpobal Kubernetes. Tá sé tábhachtach tuiscint mhaith a bheith agat ar thástálacha Beo agus Ullmhachta mar cuireann siad meicníocht ar fáil chun na bogearraí a oibriú go cobhsaí agus go laghdaítear aga neamhfhónaimh. Mar sin féin, is féidir leo dul i bhfeidhm go mór ar fheidhmíocht d'fheidhmchláir mura bhfuil siad cumraithe i gceart. Seo thíos achoimre ar cad iad an dá shampla.

Beo léiríonn má tá an coimeádán ag rith. Má theipeann air, maraíonn an kubelet an coimeádán agus tá an polasaí atosú cumasaithe dó. Mura bhfuil an coimeádán feistithe le Taiscéalaí Beo, ansin beidh rath ar an staid réamhshocraithe - mar a shonraítear in Doiciméid Kubernetes.

Ba cheart go mbeadh tóireadóirí beocht saor, i.e. ní ídíonn siad go leor acmhainní, toisc go n-imíonn siad go minic agus ba cheart go gcuirfeadh siad in iúl do Kubernetes go bhfuil an feidhmchlár á rith.

Má shocraíonn tú an rogha gach soicind a rith, cuirfidh sé seo 1 iarratas in aghaidh an tsoicind, mar sin bí ar an eolas go mbeidh acmhainní breise ag teastáil chun an trácht seo a phróiseáil.

Ag ár gcuideachta, déanann tástálacha Liveness tástáil ar chomhpháirteanna lárnacha feidhmchlár, fiú mura bhfuil na sonraí (mar shampla, ó bhunachar sonraí iargúlta nó ó thaisce) ar fáil go hiomlán.

Táimid tar éis críochphointe "sláinte" a chur ar bun sna feidhmchláir nach dtugann ach cód freagartha 200 ar ais. Is comhartha é seo go bhfuil an próiseas ar siúl agus go bhfuil sé in ann iarratais a láimhseáil (ach gan trácht fós).

Sampla Ullmhacht léiríonn sé an bhfuil an coimeádán réidh chun iarratais a sheirbheáil. Má theipeann ar an taiscéalaí ullmhachta, bainfidh an rialaitheoir críochphointe seoladh IP an choda ó chríochphointí na seirbhísí go léir a mheaitseálann an pod. Luaitear é seo freisin i gcáipéisíocht Kubernetes.

Ídíonn taiscéalaithe ullmhachta níos mó acmhainní, mar ní mór dóibh an t-innill a bhualadh ar bhealach a thaispeánann go bhfuil an feidhmchlár réidh le glacadh le hiarratais.

Tá go leor díospóireachta sa phobal maidir le rochtain dhíreach a fháil ar an mbunachar sonraí. Ag cur san áireamh an forchostais (is minic a bhíonn na seiceálacha ann, ach is féidir iad a rialú), shocraigh muid i gcás roinnt iarratas, nach n-áireofar ullmhacht chun trácht a sheirbheáil ach amháin tar éis a sheiceáil go gcuirtear taifid ar ais ón mbunachar sonraí. Chinntigh trialacha ullmhachta dea-dheartha leibhéil níos airde infhaighteachta agus cuireadh deireadh le ham neamhfhónaimh le linn imscartha.

Má shocraíonn tú ceist a chur ar an mbunachar sonraí chun ullmhacht d’iarratais a thástáil, cinntigh go bhfuil sé chomh saor agus is féidir. Glacaimis an cheist seo:

SELECT small_item FROM table LIMIT 1

Seo sampla den chaoi a ndéanaimid an dá luach seo a chumrú in Kubernetes:

livenessProbe: 
 httpGet:   
   path: /api/liveness    
   port: http 
readinessProbe:  
 httpGet:    
   path: /api/readiness    
   port: http  periodSeconds: 2

Is féidir leat roinnt roghanna cumraíochta breise a chur leis:

  • initialDelaySeconds - cé mhéad soicind a rachaidh idir seoladh an choimeádáin agus tús sheoladh na tóireadóirí.
  • periodSeconds — an t-eatramh feithimh idir ritheanna samplacha.
  • timeoutSeconds — líon na soicind ina dhiaidh sin a mheastar an pod a bheith éigeandála. Gnáth-am istigh.
  • failureThreshold líon na dteipeanna tástála sula seoltar comhartha atosaithe chuig an gcodán.
  • successThreshold líon na dtrialacha rathúla sula n-aistríonn an pod go dtí an staid réidh (tar éis teip nuair a thosaíonn an pod nó nuair a thagann sé ar ais).

Céim a Trí: Beartais Líonra Réamhshocraithe an Pod a Shocrú

Tá topagrafaíocht líonra "árasán" ag Kubernetes, de réir réamhshocraithe déanann gach pods cumarsáid dhíreach lena chéile. I gcásanna áirithe níl sé seo inmhianaithe.

Saincheist slándála a d’fhéadfadh a bheith ann is ea go bhféadfadh ionsaitheoir feidhmchlár leochaileach amháin a úsáid chun trácht a sheoladh chuig gach pods ar an líonra. Mar atá i go leor réimsí slándála, tá feidhm ag prionsabal na pribhléide is lú anseo. Go hidéalach, ba cheart go luafadh beartais líonra go sainráite na naisc idir na pods a cheadaítear agus cé na naisc nach gceadaítear.

Mar shampla, is polasaí simplí é seo a leanas a dhiúltaíonn gach trácht isteach ar ainmspás ar leith:

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:  
 name: default-deny-ingress
spec:  
 podSelector: {}  
 policyTypes:  
   - Ingress

Amharcléiriú na cumraíochta seo:

Cúigear a chailleann nuair a bhí an chéad iarratas á imscaradh ar Kubernetes
(https://miro.medium.com/max/875/1*-eiVw43azgzYzyN1th7cZg.gif)
Tuilleadh sonraí anseo.

Céim a Ceathair: Iompar Saincheaptha le Hooks agus Coimeádáin Init

Ba é ceann dár bpríomhspriocanna ná imscaradh a sholáthar i Kubernetes gan aga neamhfhónaimh d’fhorbróirí. Tá sé seo deacair mar tá go leor roghanna ann chun feidhmchláir a dhúnadh agus a n-acmhainní úsáidte a scaoileadh.

Tháinig deacrachtaí ar leith chun cinn le Nginx. Thugamar faoi deara nuair a bhí na Podaí seo á n-imscaradh in ord, gur cuireadh isteach ar naisc ghníomhacha sular críochnaíodh iad go rathúil.

Tar éis taighde fairsing ar an Idirlíon, d'éirigh sé amach nach bhfuil Kubernetes ag fanacht le naisc Nginx iad féin a sceite roimh an pod a dhúnadh. Le cabhair ón gcruachán réamh-stad, chuireamar an fheidhmiúlacht seo a leanas i bhfeidhm agus fuaireamar réidh leis an am neamhfhónaimh go hiomlán:

lifecycle: 
 preStop:
   exec:
     command: ["/usr/local/bin/nginx-killer.sh"]

agus anseo nginx-killer.sh:

#!/bin/bash
sleep 3
PID=$(cat /run/nginx.pid)
nginx -s quit
while [ -d /proc/$PID ]; do
   echo "Waiting while shutting down nginx..."
   sleep 10
done

Paradigm an-úsáideach eile is ea úsáid a bhaint as coimeádáin init chun seoladh feidhmchláir shonracha a láimhseáil. Tá sé seo úsáideach go háirithe má tá próiseas aistrithe bunachar sonraí agat atá dian ar acmhainní nach mór a rith sula dtosaíonn an t-iarratas. Is féidir leat teorainn acmhainne níos airde a shonrú don phróiseas seo freisin gan teorainn den sórt sin a shocrú don phríomhfheidhmchlár.

Is scéim choitianta eile rochtain a fháil ar rúin sa choimeádán init, a sholáthraíonn na dintiúir seo don phríomh-mhodúl, rud a chuireann cosc ​​​​ar rochtain neamhúdaraithe ar rúin ón bpríomh-mhodúl iarratais féin.

Mar is gnách, ceanglófar ó na doiciméid: reáchtálann coimeádáin init cód úsáideora nó fóntais a chuirfeadh slándáil íomhá coimeádán an fheidhmchláir i mbaol ar shlí eile. Trí uirlisí gan ghá a choinneáil ar leithligh, cuireann tú teorainn le dromchla ionsaí íomhá coimeádán an iarratais.

Céim a Cúig: Cumraíocht Eithne

Ar deireadh, déanaimis labhairt faoi theicníc níos forbartha.

Is ardán thar a bheith solúbtha é Kubernetes a ligeann duit ualaí oibre a rith mar is cuí leat. Tá roinnt feidhmchlár an-éifeachtach againn atá an-dian ar acmhainní. Tar éis tástáil ualaigh fhairsing a dhéanamh, fuair muid amach go raibh am deacair ag ceann de na feidhmchláir coinneáil suas leis an ualach tráchta a rabhthas ag súil leis nuair a bhí socruithe réamhshocraithe Kubernetes i bhfeidhm.

Mar sin féin, ligeann Kubernetes duit coimeádán pribhléideach a reáchtáil nach n-athraíonn ach paraiméadair eithne le haghaidh pod ar leith. Seo an méid a d’úsáideamar chun an t-uaslíon nasc oscailte a athrú:

initContainers:
  - name: sysctl
     image: alpine:3.10
     securityContext:
         privileged: true
      command: ['sh', '-c', "sysctl -w net.core.somaxconn=32768"]

Is teicníc níos forbartha é seo nach bhfuil ag teastáil go minic. Ach má tá d’iarratas ag streachailt le dul i ngleic le hualach trom, is féidir leat triail a bhaint as roinnt de na socruithe seo a athrú. Tuilleadh eolais faoin bpróiseas seo agus luachanna éagsúla a shocrú - mar i gcónaí sna doiciméid oifigiúla.

Mar fhocal scoir

Cé go bhféadfadh Kubernetes cosúil le réiteach lasmuigh den bhosca, tá roinnt céimeanna tábhachtacha nach mór a ghlacadh chun iarratais a choinneáil ag rith go réidh.

Le linn an aistrithe go Kubernetes, tá sé tábhachtach an "timthriall tástála ualaigh" a leanúint: an feidhmchlár a rith, é a thástáil faoi ualach, breathnú ar an méadracht agus ar an iompar scálaithe, coigeartaigh an chumraíocht bunaithe ar na sonraí seo, agus ansin déan an timthriall seo arís.

Bí réalaíoch faoin trácht a bhfuiltear ag súil leis agus déan iarracht dul níos faide ná sin chun a fháil amach cé na comhpháirteanna a bhriseann ar dtús. Leis an gcur chuige atriallach seo, b’fhéidir nach leor ach dornán de na moltaí liostaithe le go n-éireoidh leo. Nó d'fhéadfadh go mbeadh gá le saincheapadh níos doimhne.

Cuir na ceisteanna seo ort féin i gcónaí:

  1. Cé mhéad acmhainní a úsáideann feidhmchláir agus conas a athróidh an méid sin?
  2. Cad iad na fíor-riachtanais scálaithe? Cé mhéad tráchta a láimhseálfaidh an aip ar an meán? Cad faoi bhuaicthrácht?
  3. Cé chomh minic is gá an tseirbhís a leathnú amach? Cé chomh tapa agus a chaithfidh pods nua a bheith ar bun chun trácht a fháil?
  4. Cé chomh galánta is a dhúnann pods? An bhfuil sé riachtanach ar chor ar bith? An féidir imscaradh a bhaint amach gan downtime?
  5. Conas rioscaí slándála a íoslaghdú agus teorainn a chur le damáiste ó aon phodanna contúirteacha? An bhfuil ceadanna nó rochtain ag aon seirbhísí nach bhfuil de dhíth orthu?

Soláthraíonn Kubernetes ardán dochreidte a ligeann duit na cleachtais is fearr a úsáid chun na mílte seirbhísí a imscaradh i mbraisle. Mar sin féin, tá gach iarratas difriúil. Uaireanta bíonn gá le beagán níos mó oibre le cur i bhfeidhm.

Go fortunately, soláthraíonn Kubernetes na socruithe riachtanacha chun na spriocanna teicniúla go léir a bhaint amach. Trí úsáid a bhaint as meascán d'iarratais agus de theorainneacha acmhainne, taiscéalaithe Beo agus Ullmhachta, coimeádáin init, beartais líonra, agus tiúnadh eithne saincheaptha, is féidir leat ardfheidhmíocht a bhaint amach mar aon le lamháltas lochtanna agus inscálaitheacht tapa.

Cad eile atá le léamh:

  1. Dea-Chleachtais agus Dea-Chleachtais maidir le Gabhdáin Rith agus Kubernetes i Timpeallachtaí Táirgthe.
  2. 90+ Uirlisí Úsáideacha do Kubernetes: Imscaradh, Bainistíocht, Monatóireacht, Slándáil agus Tuilleadh.
  3. Ár gcainéal Timpeall Kubernetes i Telegram.

Foinse: will.com

Add a comment