Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes
Cabhróidh an t-alt seo leat tuiscint a fháil ar an gcaoi a n-oibríonn cothromú ualaigh i Kubernetes, cad a tharlaíonn nuair a bhíonn naisc fhadchónaithe á scálú, agus cén fáth ar cheart duit machnamh a dhéanamh ar chothromú taobh an chliaint má úsáideann tú HTTP/2, gRPC, RSockets, AMQP, nó prótacail eile a bhfuil saol fada acu . 

Beagán faoin gcaoi a ndéantar trácht a athdháileadh i Kubernetes 

Soláthraíonn Kubernetes dhá astarraingt áisiúla chun feidhmchláir a imscaradh: Seirbhísí agus Imscaradh.

Déanann imscaradh cur síos ar conas agus cé mhéad cóip de d’iarratas ar cheart a bheith ar siúl ag aon am ar leith. Imscartar gach feidhmchlár mar Phod agus sanntar seoladh IP dó.

Tá feidhm chomhchosúil ag seirbhísí le cothromóir ualaigh. Tá siad deartha chun trácht a dháileadh thar pods iolracha.

A ligean ar a fheiceáil cad tá sé cosúil.

  1. Sa léaráid thíos is féidir leat a fheiceáil trí chás den fheidhmchlár céanna agus cothromóir ualaigh:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  2. Tugtar Seirbhís ar an gcothromóir ualaigh agus sanntar seoladh IP dó. Déantar aon iarratas isteach a atreorú chuig ceann de na pods:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  3. Cinneann cás an imscartha líon na gcásanna den iarratas. Ní bheidh ort go deo leathnú díreach faoi:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  4. Sanntar a sheoladh IP féin do gach pod:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Tá sé úsáideach smaoineamh ar sheirbhísí mar bhailiúchán seoltaí IP. Gach uair a fhaigheann tú rochtain ar an tseirbhís, roghnaítear ceann de na seoltaí IP ón liosta agus úsáidtear é mar an seoladh sprice.

Breathnaíonn sé mar seo.

  1. Faightear iarratas curl 10.96.45.152 chuig an tseirbhís:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  2. Roghnaíonn an tseirbhís ceann de thrí sheoladh pod mar cheann scríbe:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  3. Déantar trácht a atreorú chuig pod ar leith:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Más é tosaigh agus inneall atá i d’iarratas, beidh seirbhís agus imscaradh agat do gach ceann díobh.

Nuair a dhéanann an t-éadanas iarratas chuig an inneall, ní gá go mbeadh a fhios aige go beacht cé mhéad pod a fhreastalaíonn ar an inneall: d'fhéadfadh ceann amháin, deich, nó céad a bheith ann.

Chomh maith leis sin, níl a fhios ag an aghaidh faoi sheoltaí na pods a fhreastalaíonn ar an inneall.

Nuair a dhéanann an t-éadanas iarratas chuig an inneall, úsáideann sé seoladh IP na seirbhíse inneall, rud nach n-athraíonn.

Seo an chuma atá air.

  1. Faoi 1 iarrtar an chomhpháirt inneall inmheánach. In ionad ceann sonrach a roghnú don inneall, déanann sé iarratas chuig an tseirbhís:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  2. Roghnaíonn an tseirbhís ceann de na pods inneall mar an seoladh sprice:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  3. Téann an trácht ó Phod 1 go Pod 5, arna roghnú ag an tseirbhís:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  4. Faoi 1 níl a fhios go díreach cé mhéad pods mar faoi 5 atá i bhfolach taobh thiar den tseirbhís:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Ach conas go díreach a dhéanann an tseirbhís iarratais a dháileadh? Dealraíonn sé go n-úsáidtear cothromú robin bhabhta? A ligean ar figiúr sé amach. 

Comhardaithe i seirbhísí Kubernetes

Níl seirbhísí Kubernetes ann. Níl aon phróiseas ann don tseirbhís dá sanntar seoladh IP agus port.

Is féidir leat é seo a fhíorú trí logáil isteach in aon nód sa bhraisle agus an t-ordú netstat -ntlp a rith.

Ní bheidh tú in ann an seoladh IP a leithdháileadh ar an tseirbhís a fháil fiú.

Tá seoladh IP na seirbhíse suite sa chiseal rialaithe, sa rialtóir, agus taifeadta sa bhunachar sonraí - etcd. Úsáideann comhpháirt eile an seoladh céanna - kube-proxy.
Faigheann Kube-proxy liosta seoltaí IP do gach seirbhís agus gineann sé sraith rialacha iptables ar gach nód sa bhraisle.

Deir na rialacha seo: “Má fheiceann muid seoladh IP na seirbhíse, ní mór dúinn seoladh ceann scríbe na hiarrata a mhodhnú agus é a sheoladh chuig ceann de na pods.”

Ní úsáidtear seoladh IP na seirbhíse ach mar phointe iontrála agus ní fhreastalaíonn aon phróiseas air ag éisteacht leis an seoladh IP agus an calafort sin.

Breathnaímid ar seo

  1. Smaoinigh ar bhraisle de thrí nóid. Tá pods ag gach nód:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  2. Tá pods ceangailte péinteáilte beige mar chuid den tseirbhís. Toisc nach bhfuil an tseirbhís ann mar phróiseas, tá sé léirithe i liath:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  3. Iarrann an chéad pod seirbhís agus ní mór dó dul chuig ceann de na pods gaolmhar:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  4. Ach níl an tseirbhís ann, níl an próiseas ann. Conas a oibríonn sé?

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  5. Sula bhfágann an t-iarratas an nód, téann sé trí na rialacha iptables:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  6. Tá a fhios ag rialacha iptables nach bhfuil an tseirbhís ann agus cuirtear ceann de na seoltaí IP de na pods a bhaineann leis an tseirbhís sin ina ionad:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  7. Faigheann an t-iarratas seoladh IP bailí mar an seoladh sprice agus is gnách é a phróiseáil:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  8. Ag brath ar thopeolaíocht an líonra, sroicheann an t-iarratas an pod sa deireadh:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

An féidir le iptables cothromaíocht a luchtú?

Ní hea, úsáidtear iptables le haghaidh scagadh agus níor dearadh iad le haghaidh cothromaithe.

Mar sin féin, is féidir sraith rialacha a scríobh a oibríonn mar pseudo-cothromóir.

Agus is é seo go díreach a chuirtear i bhfeidhm i Kubernetes.

Má tá trí pods agat, scríobhfaidh kube-proxy na rialacha seo a leanas:

  1. Roghnaigh an chéad fho le dóchúlacht 33%, nó téigh go dtí an chéad riail eile.
  2. Roghnaigh an dara ceann le dóchúlacht 50%, nó téigh go dtí an chéad riail eile.
  3. Roghnaigh an tríú faoi.

Mar thoradh ar an gcóras seo roghnaítear gach pod le dóchúlacht 33%.

Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Agus níl aon ráthaíocht go roghnófar Pod 2 an chéad cheann eile tar éis Pod 1.

Tabhair faoi deara: úsáideann iptables modúl staidrimh le dáileadh randamach. Mar sin, tá an t-algartam comhardaithe bunaithe ar roghnú randamach.

Anois go dtuigeann tú conas a oibríonn seirbhísí, déanaimis féachaint ar chásanna seirbhíse níos suimiúla.

Ní scálaíonn naisc fadsaoil in Kubernetes de réir réamhshocraithe

Freastalaíonn nasc TCP ar leith ar gach iarratas HTTP ón aghaidh go dtí an t-inneall, a osclaítear agus a dhúntar.

Má sheolann an t-éadanas 100 iarratas in aghaidh an tsoicind chuig an inneall, ansin osclaítear agus dúnfar 100 nasc TCP éagsúil.

Is féidir leat am próiseála iarratais agus ualach a laghdú trí nasc TCP amháin a oscailt agus é a úsáid le haghaidh gach iarratas HTTP ina dhiaidh sin.

Tá gné ag an bprótacal HTTP ar a dtugtar HTTP keep-beo, nó athúsáid nasc. Sa chás seo, úsáidtear nasc TCP amháin chun iarratais agus freagraí iomadúla HTTP a sheoladh agus a fháil:

Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Níl an ghné seo cumasaithe de réir réamhshocraithe: ní mór an freastalaí agus an cliant a chumrú dá réir.

Tá an socrú féin simplí agus inrochtana don chuid is mó de theangacha agus de thimpeallachtaí ríomhchlárúcháin.

Seo roinnt naisc chuig samplaí i dteangacha éagsúla:

Cad a tharlóidh má úsáidimid coimeád beo i seirbhís Kubernetes?
Glacaimis leis go gcoimeádtar an t-éadan tosaigh agus an tacaíocht backend araon beo.

Tá cóip amháin againn den tosaigh agus trí chóip den inneall. Déanann an t-éadanas an chéad iarratas agus osclaíonn sé nasc TCP leis an inneall. Sroicheann an t-iarratas an tseirbhís, roghnaítear ceann de na pods backend mar an seoladh sprice. Seolann an t-inneall freagra, agus faigheann an t-éadanas é.

Murab ionann agus an gnáthstaid ina ndúntar an nasc TCP tar éis freagra a fháil, coinnítear ar oscailt anois é le haghaidh tuilleadh iarratais HTTP.

Cad a tharlaíonn má sheolann an t-éadanas níos mó iarratas chuig an inneall?

Chun na hiarrataí sin a chur ar aghaidh, úsáidfear nasc TCP oscailte, rachaidh gach iarratas chuig an inneall céanna ina ndeachaigh an chéad iarratas.

Nár cheart do iptables an trácht a athdháileadh?

Ní sa chás seo.

Nuair a chruthaítear nasc TCP, téann sé trí rialacha iptables, a roghnaíonn inneall sonrach áit a rachaidh an trácht.

Ós rud é go bhfuil gach iarratas ina dhiaidh sin ar nasc TCP atá oscailte cheana féin, ní thugtar na rialacha iptables a thuilleadh.

A ligean ar a fheiceáil cad tá sé cosúil.

  1. Seolann an chéad phoda iarratas chuig an tseirbhís:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  2. Tá a fhios agat cheana féin cad a tharlóidh ina dhiaidh sin. Níl an tseirbhís ann, ach tá rialacha iptables ann a phróiseálfaidh an t-iarratas:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  3. Roghnófar ceann de na pods backend mar an seoladh sprice:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  4. Sroicheann an t-iarratas an pod. Ag an bpointe seo, bunófar nasc leanúnach TCP idir an dá pods:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  5. Rachaidh aon iarratas ina dhiaidh sin ón gcéad phod tríd an nasc atá bunaithe cheana féin:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Is é an toradh ná am freagartha níos tapúla agus tréchur níos airde, ach caillfidh tú an cumas chun an t-innill a scála.

Fiú má tá dhá pods sa backend, le nasc leanúnach, beidh an trácht ag dul i gcónaí ar cheann acu.

An féidir é seo a shocrú?

Ós rud é nach bhfuil a fhios ag Kubernetes conas naisc sheasmhacha a chothromú, is ortsa atá an tasc seo.

Is éard atá i seirbhísí ná bailiúchán seoltaí IP agus calafoirt ar a dtugtar críochphointí.

Is féidir le d’iarratas liosta críochphointí a fháil ón tseirbhís agus cinneadh a dhéanamh ar conas iarratais a dháileadh eatarthu. Is féidir leat nasc marthanach a oscailt le gach pod agus iarratais a chothromú idir na naisc seo trí úsáid a bhaint as robin chruinn.

Nó iarratas a dhéanamh níos mó halgartaim chothromaithe casta.

Ba cheart go leanfadh an cód cliant-taobh atá freagrach as cothromú an loighic seo:

  1. Faigh liosta críochphointí ón tseirbhís.
  2. Oscail nasc marthanach do gach críochphointe.
  3. Nuair is gá iarratas a dhéanamh, bain úsáid as ceann de na naisc oscailte.
  4. Nuashonraigh liosta na gcríochphointí go rialta, cruthaigh cinn nua nó dún seancheangail sheasmhacha má athraíonn an liosta.

Seo an chuma a bheidh air.

  1. In ionad an chéad pod a sheolann an t-iarratas chuig an tseirbhís, is féidir leat iarratais ar thaobh an chliaint a chothromú:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  2. Ní mór duit cód a scríobh a fhiafraíonn cé na pods atá mar chuid den tseirbhís:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  3. Nuair a bheidh an liosta agat, sábháil ar thaobh an chliaint é agus bain úsáid as chun nascadh leis na pods:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

  4. Tá tú freagrach as an algartam cothromaithe ualaigh:

    Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Anois tá an cheist: an mbaineann an fhadhb seo le HTTP a choinneáil beo amháin?

Comhardaithe ualaigh cliant-taobh

Ní hé HTTP an t-aon phrótacal ar féidir úsáid a bhaint as naisc TCP marthanacha.

Má úsáideann d’iarratas bunachar sonraí, ní osclaítear nasc TCP gach uair is gá duit iarratas a dhéanamh nó doiciméad a aisghabháil ón mbunachar sonraí. 

Ina áit sin, déantar nasc leanúnach TCP leis an mbunachar sonraí a oscailt agus a úsáid.

Má tá do bhunachar sonraí imlonnaithe ar Kubernetes agus go gcuirtear rochtain ar fáil mar sheirbhís, ansin beidh na fadhbanna céanna agat a bhfuil cur síos orthu sa chuid roimhe seo.

Beidh macasamhail bunachar sonraí amháin níos luchtaithe ná na cinn eile. Ní chuideoidh Kube-proxy agus Kubernetes naisc a chothromú. Ní mór duit a bheith cúramach na fiosruithe chuig do bhunachar sonraí a chothromú.

Ag brath ar an leabharlann a úsáideann tú chun nascadh leis an mbunachar sonraí, d'fhéadfadh go mbeadh roghanna éagsúla agat chun an fhadhb seo a réiteach.

Seo thíos sampla de rochtain a fháil ar bhraisle bunachar sonraí MySQL ó Node.js:

var mysql = require('mysql');
var poolCluster = mysql.createPoolCluster();

var endpoints = /* retrieve endpoints from the Service */

for (var [index, endpoint] of endpoints) {
  poolCluster.add(`mysql-replica-${index}`, endpoint);
}

// Make queries to the clustered MySQL database

Tá go leor prótacail eile ann a úsáideann naisc TCP marthanacha:

  • WebSockets agus WebSockets daingnithe
  • HTTP / 2
  • gRPC
  • RSoicéid
  • AMQP

Ba cheart go mbeadh cur amach agat ar an gcuid is mó de na prótacail seo cheana féin.

Ach má tá an oiread sin tóir ar na prótacail seo, cén fáth nach bhfuil réiteach cothromaithe caighdeánaithe ann? Cén fáth a bhfuil gá le loighic an chliaint a athrú? An bhfuil réiteach dúchais Kubernetes ann?

Tá Kube-proxy agus iptables deartha chun na cásanna úsáide is coitianta a chlúdach agus iad ag imscaradh go Kubernetes. Tá sé seo mar áis.

Má tá seirbhís gréasáin á úsáid agat a nochtann API REST, tá an t-ádh ort - sa chás seo, ní úsáidtear naisc TCP leanúnacha, is féidir leat aon seirbhís Kubernetes a úsáid.

Ach a luaithe a thosaíonn tú ag baint úsáide as naisc TCP marthanacha, beidh ort a dhéanamh amach conas an t-ualach a dháileadh go cothrom thar na hinnill. Níl réitigh réamhdhéanta ag Kubernetes don chás seo.

Mar sin féin, is cinnte go bhfuil roghanna ann a chabhróidh.

Na naisc fhadtéarmacha a chothromú i Kubernetes

Tá ceithre chineál seirbhíse i Kubernetes:

  1. ClusterIP
  2. NódPort
  3. Luchtaigh Cothromóir
  4. Gan cheann

Feidhmíonn na chéad trí sheirbhís bunaithe ar sheoladh IP fíorúil, a úsáideann kube-proxy chun rialacha iptables a thógáil. Ach is é bunchloch na seirbhísí go léir ná seirbhís gan cheann.

Níl aon seoladh IP ag an tseirbhís gan cheann agus ní sholáthraíonn sí ach meicníocht chun liosta seoltaí IP agus calafoirt na pods (deireadhphointí) a bhaineann léi a aisghabháil.

Tá gach seirbhís bunaithe ar an tseirbhís gan cheann.

Is seirbhís gan cheann í an tseirbhís ClusterIP le roinnt breisithe: 

  1. Sannann an ciseal bainistíochta seoladh IP dó.
  2. Gineann Kube-proxy na rialacha riachtanacha iptables.

Ar an mbealach seo is féidir leat neamhaird a dhéanamh de sheachvótálaí kube agus úsáid a bhaint go díreach as liosta na gcríochphointí a fhaightear ón tseirbhís gan cheann chun d’iarratas a chothromú.

Ach conas is féidir linn loighic chomhchosúil a chur le gach feidhmchlár a úsáidtear sa bhraisle?

Má tá d’iarratas imlonnaithe cheana féin, seans go mbeidh cuma dodhéanta ar an tasc seo. Mar sin féin, tá rogha eile ann.

Cabhróidh Mogall Seirbhíse leat

Is dócha gur thug tú faoi deara cheana féin go bhfuil an straitéis um chothromú ualaigh taobh an chliaint sách caighdeánach.

Nuair a thosaíonn an t-iarratas:

  1. Faigheann sé liosta seoltaí IP ón tseirbhís.
  2. Osclaíonn agus coinníonn sé linn nasc.
  3. Nuashonraítear an linn go tréimhsiúil trí chríochphointí a chur leis nó a bhaint.

Nuair is mian leis an iarratas iarratas a dhéanamh, déanann sé:

  1. Roghnaíonn sé nasc atá ar fáil agus úsáid á baint as roinnt loighice (m.sh. robin chruinn).
  2. Déanann sé an t-iarratas.

Oibríonn na céimeanna seo do naisc WebSockets, gRPC, agus AMQP araon.

Is féidir leat an loighic seo a scaradh i leabharlann ar leith agus í a úsáid i d’fheidhmchláir.

Mar sin féin, is féidir leat mogaill seirbhíse a úsáid mar Istio nó Linkerd ina ionad sin.

Cuireann Mogall Seirbhíse le d’iarratas le próiseas:

  1. Cuardaíonn sé go huathoibríoch seoltaí IP seirbhíse.
  2. Déantar tástáil ar naisc mar WebSockets agus gRPC.
  3. Iarmhéid iarratais ag baint úsáide as an prótacal ceart.

Cuidíonn Mogall Seirbhíse le trácht a bhainistiú laistigh den bhraisle, ach tá sé dian ar acmhainní. Tá roghanna eile ag baint úsáide as leabharlanna tríú páirtí cosúil le Netflix Ribbon nó seachvótálaithe in-ríomhchláraithe cosúil le Toscaire.

Cad a tharlaíonn má dhéanann tú neamhaird ar shaincheisteanna cothromaíochta?

Is féidir leat an rogha a dhéanamh gan cothromú ualaigh a úsáid agus gan aon athruithe a thabhairt faoi deara go fóill. Breathnaímid ar roinnt cásanna oibre.

Má tá níos mó cliant agat ná freastalaithe, ní fadhb mhór í seo.

Ligean le rá go bhfuil cúig chliaint ann a nascann le dhá fhreastalaí. Fiú mura bhfuil aon chothromú ann, úsáidfear an dá fhreastalaí:

Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

B’fhéidir nach bhfuil naisc scaipthe go cothrom: b’fhéidir ceithre chliaint ceangailte leis an bhfreastalaí céanna, ach tá seans maith ann go n-úsáidfear an dá fhreastalaí.

Is é an rud is mó fadhbanna ná an cás eile.

Má tá níos lú cliant agat agus níos mó freastalaithe, d’fhéadfadh sé go mbeadh tearcúsáidte á baint as d’acmhainní agus go dtiocfaidh scrogall a d’fhéadfadh a bheith ann.

Ligean le rá go bhfuil dhá chliaint agus cúig freastalaithe. Sa chás is fearr, beidh dhá nasc buan le dhá fhreastalaí as gach cúigear.

Beidh na freastalaithe eile díomhaoin:

Cothromú luchtaithe agus scálú naisc fadsaoil i Kubernetes

Murar féidir leis an dá fhreastalaí seo iarratais cliant a láimhseáil, ní bheidh scálú cothrománach ina chuidiú.

Conclúid

Tá seirbhísí Kubernetes deartha chun oibriú sa chuid is mó de chásanna caighdeánacha feidhmchláir ghréasáin.

Mar sin féin, a luaithe a thosaíonn tú ag obair le prótacail feidhmchláir a úsáideann naisc TCP marthanacha, amhail bunachair shonraí, gRPC nó WebSockets, níl seirbhísí oiriúnach a thuilleadh. Ní sholáthraíonn Kubernetes meicníochtaí inmheánacha chun naisc TCP marthanacha a chothromú.

Ciallaíonn sé seo go gcaithfidh tú iarratais a scríobh le cothromaíocht ó thaobh an chliaint i gcuimhne.

Aistriúchán ullmhaithe ag an bhfoireann Kubernetes aaS ó Mail.ru.

Cad eile atá le léamh ar an ábhar:

  1. Trí leibhéal uathscálaithe i Kubernetes agus conas iad a úsáid go héifeachtach
  2. Kubernetes i spiorad na píoráideachta le teimpléad le cur i bhfeidhm.
  3. Ár gcainéal Telegram maidir le claochlú digiteach.

Foinse: will.com

Add a comment