Conas a fhaigheann pod Kubernetes seoladh IP?

Nóta. aistrigh.: Téann an t-alt seo, scríofa ag innealtóir SRE ó LinkedIn, isteach go mion faoin draíocht istigh i Kubernetes - níos cruinne, idirghníomhú CRI, CNI agus kube-apiserver - a tharlaíonn nuair is gá seoladh IP a shannadh don chéad pod eile.

Ceann de na bunriachtanais Samhail líonra Kubernetes is é sin go gcaithfidh gach pod a sheoladh IP féin agus aon pod eile sa bhraisle a bheith in ann teagmháil a dhéanamh leis ag an seoladh sin. Tá go leor “soláthróirí” líonra (Flannel, Calico, Canal, etc.) a chuidíonn leis an tsamhail líonra seo a chur i bhfeidhm.

Nuair a thosaigh mé ag obair le Kubernetes ar dtús, ní raibh sé iomlán soiléir dom conas go díreach a fhaigheann pods a seoltaí IP. Fiú agus tuiscint á fháil ar conas a d’fheidhmigh na comhpháirteanna aonair, bhí sé deacair iad a shamhlú ag obair le chéile. Mar shampla, bhí a fhios agam cad a bhí i gceist le forlíontáin CNI, ach ní raibh aon smaoineamh agam conas go díreach a glaodh orthu. Mar sin, chinn mé an t-alt seo a scríobh chun eolas a roinnt faoi na comhpháirteanna líonra éagsúla agus conas a oibríonn siad le chéile i gcnuasach Kubernetes, rud a ligeann do gach pod a sheoladh IP uathúil féin a fháil.

Tá bealaí éagsúla ann chun líonrú a eagrú i Kubernetes, díreach mar atá roghanna éagsúla ama rite le haghaidh coimeádáin. Bainfidh an foilseachán seo úsáid as Flannel líonra a eagrú i mbraisle, agus mar thimpeallacht inrite - Coimeádán. Tá mé ag glacadh leis freisin go bhfuil a fhios agat conas a oibríonn líonrú idir coimeádáin, mar sin ní dhéanfaidh mé ach teagmháil a dhéanamh leis go hachomair, díreach don chomhthéacs.

Roinnt coincheapa bunúsacha

Gabhdáin agus an Líonra: Forbhreathnú gairid

Tá neart foilseachán den scoth ar an Idirlíon a mhíníonn conas a dhéanann coimeádáin cumarsáid lena chéile ar fud an líonra. Mar sin, ní thabharfaidh mé ach forbhreathnú ginearálta ar na coincheapa bunúsacha agus mé féin a theorannú do chur chuige amháin, a bhaineann le droichead Linux a chruthú agus pacáistí a chuimsiú. Fágtar sonraí ar lár, ós rud é go bhfuil alt ar leith tuillte ag ábhar an líonrú coimeádán féin. Soláthrófar naisc le roinnt foilseachán a bhfuil léargas ar leith ag baint leo agus atá oideachasúil thíos.

Coimeádáin ar ósta amháin

Is éard atá i gceist le bealach amháin chun cumarsáid a eagrú trí sheoltaí IP idir coimeádáin a ritheann ar an ósta céanna ná droichead Linux a chruthú. Chun na críche sin, cruthaítear gléasanna fíorúla i Kubernetes (agus Docker) veth (teiripe fhíorúil). Ceanglaíonn foirceann amháin den fheiste veth le hainmspás líonra an choimeádáin, agus an ceann eile chuig Droichead linux ar an líonra óstach.

Tá foirceann amháin den veth ag gach coimeádán ar an ósta céanna ceangailte le droichead trínar féidir leo cumarsáid a dhéanamh lena chéile trí sheoltaí IP. Tá seoladh IP ag droichead Linux freisin agus feidhmíonn sé mar gheata chun trácht a dhéanamh ó na pods atá i ndán do nóid eile.

Conas a fhaigheann pod Kubernetes seoladh IP?

Coimeádáin ar óstaigh éagsúla

Is modh amháin é imchochlú paicéid a ligeann do choimeádáin ar nóid éagsúla cumarsáid a dhéanamh lena chéile ag baint úsáide as seoltaí IP. Ag Flannel, tá an teicneolaíocht freagrach as an deis seo. vxlan, a “phacáistí” an bunphaicéad isteach i bpaicéad UDP agus ansin a sheolann chuig a cheann scríbe é.

I mbraisle Kubernetes, cruthaíonn Flannel gléas vxlan agus nuashonraíonn sé an tábla bealaigh ar gach nód dá réir sin. Téann gach paicéad atá ceaptha do choimeádán ar óstaigh eile tríd an ngléas vxlan agus cuimsítear é i bpaicéad UDP. Ag an gceann scríbe, baintear an paicéad neadaithe agus cuirtear ar aghaidh chuig an pod atá ag teastáil.

Conas a fhaigheann pod Kubernetes seoladh IP?
Nóta: Níl anseo ach bealach amháin chun cumarsáid líonra a eagrú idir coimeádáin.

Cad é CRI?

CRI (Comhéadan Am Rite Coimeádán) is breiseán é a ligeann do kubelet timpeallachtaí éagsúla ama rite coimeádán a úsáid. Tá an CRI API ionsuite in amanna rite éagsúla, ionas gur féidir le húsáideoirí an t-am rite dá rogha féin a roghnú.

Cad is CNI ann?

Tionscadal CNI a sonraíocht chun réiteach líonra uilíoch a eagrú do choimeádáin Linux. Ina theannta sin, folaíonn sé forlíontáin, freagrach as feidhmeanna éagsúla agus líonra pod á bhunú. Is comhad inrite é an breiseán CNI a chomhlíonann an tsonraíocht (déanfaimid plé ar roinnt breiseán thíos).

Fo-líonraí a leithdháileadh ar nóid chun seoltaí IP a shannadh do choda

Ós rud é go gcaithfidh seoladh IP a bheith ag gach pod i mbraisle, tá sé tábhachtach a chinntiú go bhfuil an seoladh seo uathúil. Baintear é seo amach trí fholíon uathúil a shannadh do gach nód, as a sanntar seoltaí IP do na pods ar an nód sin.

Rialaitheoir IPAM nód

Nuair a nodeipam pas mar pharaiméadar brataí --controllers kube-rialtóir-bainisteoir, leithdháileann sé folíon ar leith (podCIDR) ar gach nód ón gcnuasach CIDR (i.e., raon seoltaí IP an bhraisghréasáin). Ós rud é nach ndéanann na podCIDRanna seo forluí, is féidir seoladh IP uathúil a thabhairt do gach pod.

Sanntar podCIDR do nód Kubernetes nuair a chláraítear é leis an mbraisle ar dtús. Chun podCIDR na nóid a athrú, ní mór duit iad a dhíchlárú agus ansin iad a athchlárú, ag déanamh athruithe cuí ar chumraíocht chiseal rialaithe Kubernetes eatarthu. Is féidir leat podCIDR nód a thaispeáint ag baint úsáide as an ordú seo a leanas:

$ kubectl get no <nodeName> -o json | jq '.spec.podCIDR'
10.244.0.0/24

Kubelet, am rite coimeádáin agus forlíontáin CNI: conas a oibríonn sé go léir

Tá go leor céimeanna ullmhúcháin i gceist le pod in aghaidh an nód a sceidealú. Sa chuid seo, díreoidh mé ach ar na cinn a bhaineann go díreach le líonra pod a bhunú.

Má dhéantar pod a sceidealú go dtí nód áirithe, spreagtar an slabhra imeachtaí seo a leanas:

Conas a fhaigheann pod Kubernetes seoladh IP?

Ceisteanna Coitianta: Ailtireacht breiseán CRI Coimeádán.

Idirghníomhú idir am rite coimeádán agus forlíontáin CNI

Tá a bhreiseán CNI féin ag gach soláthraí líonra. Ritheann am rite an choimeádáin é chun an líonra don phod a chumrú de réir mar a thosaíonn sé. I gcás coimeádán, seolann an breiseán an breiseán CNI Coimeádán CRI.

Thairis sin, tá a ghníomhaire féin ag gach soláthraí. Tá sé suiteáilte ar gach nóid Kubernetes agus tá sé freagrach as cumraíocht líonra na pods. Tá an gníomhaire seo san áireamh leis an gcumraíocht CNI nó cruthaíonn sé go neamhspleách é ar an nód. Cabhraíonn an cumraíocht leis an mbreiseán CRI a shocrú cén breiseán CNI ar cheart glaoch air.

Is féidir suíomh cumraíochta CNI a shaincheapadh; de réir réamhshocraithe tá sé i /etc/cni/net.d/<config-file>. Tá riarthóirí braisle freagrach freisin as forlíontáin CNI a shuiteáil ar gach nód braisle. Is féidir a suíomh a shaincheapadh freisin; eolaire réamhshocraithe - /opt/cni/bin.

Agus coimeádán á úsáid agat, is féidir na cosáin don chumraíocht breiseán agus do dhénártha a shocrú sa chuid [plugins.«io.containerd.grpc.v1.cri».cni] в comhad cumraíochta coimeádán.

Ós rud é go bhfuil Flannel á úsáid againn mar ár soláthraí líonra, déanaimis labhairt beagán faoi é a shocrú:

  • Is gnách go gcuirtear Flanneld (deamhain Flannel) isteach i mbraisle mar DeamhanSet le install-cni mar coimeádán init.
  • Install-cni cruthaíonn Comhad cumraíochta CNI (/etc/cni/net.d/10-flannel.conflist) ar gach nód.
  • Cruthaíonn Flanneld gléas vxlan, aisghabhann sé meiteashonraí líonra ón bhfreastalaí API, agus déanann sé monatóireacht ar nuashonruithe pod. De réir mar a chruthaítear iad, dáileann sé bealaí chuig gach pods ar fud an bhraisle.
  • Cuireann na bealaí seo ar chumas pods cumarsáid a dhéanamh lena chéile trí sheoltaí IP.

Chun eolas níos mionsonraithe a fháil faoi obair Flannel, molaim na naisc ag deireadh an ailt a úsáid.

Seo léaráid den idirghníomhaíocht idir an breiseán Coimeádán CRI agus na forlíontáin CNI:

Conas a fhaigheann pod Kubernetes seoladh IP?

Mar a fheiceann tú thuas, glaonna an kubelet an breiseán Coimeádán CRI chun an pod a chruthú, a ghlaonn ansin ar an mbreiseán CNI chun líonra an pod a chumrú. Agus é sin á dhéanamh, glaonn breiseán CNI an tsoláthraí líonra ar fhorlíontáin lárnacha CNI eile chun gnéithe éagsúla den líonra a chumrú.

Idirghníomhú idir forlíontáin CNI

Tá forlíontáin CNI éagsúla ann a bhfuil sé mar chúram orthu cabhrú le cumarsáid líonra a bhunú idir coimeádáin ar an ósta. Pléifidh an t-alt seo trí cinn acu.

Breiseán CNI Flannel

Nuair a bhíonn Flannel á úsáid mar sholáthraí líonra, glaonna an chomhpháirt CRI Coimeádán Breiseán CNI Flannelag baint úsáide as an gcomhad cumraíochta CNI /etc/cni/net.d/10-flannel.conflist.

$ cat /etc/cni/net.d/10-flannel.conflist
{
  "name": "cni0",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
         "ipMasq": false,
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    }
  ]
}

Oibríonn an breiseán Flannel CNI i gcomhar le Flanneld. Le linn tosaithe, déanann Flanneld podCIDR agus sonraí eile a bhaineann leis an líonra a aisghabháil ón bhfreastalaí API agus sábhálann sé i gcomhad iad /run/flannel/subnet.env.

FLANNEL_NETWORK=10.244.0.0/16 
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450 
FLANNEL_IPMASQ=false

Úsáideann an breiseán Flannel CNI sonraí ó /run/flannel/subnet.env chun an breiseán droichead CNI a chumrú agus a ghlaoch.

Droichead breiseán CNI

Glaoitear an breiseán seo leis an gcumraíocht seo a leanas:

{
  "name": "cni0",
  "type": "bridge",
  "mtu": 1450,
  "ipMasq": false,
  "isGateway": true,
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24"
  }
}

Nuair a ghlaoitear air den chéad uair, cruthaíonn sé droichead Linux le «name»: «cni0», a léirítear sa chumraíocht. Ansin cruthaítear péire veth do gach pod. Tá foirceann amháin de ceangailte le hainmspás líonra an choimeádáin, tá an ceann eile san áireamh sa droichead Linux ar an líonra óstach. Droichead breiseán CNI nascann sé gach coimeádán óstaigh le droichead Linux ar an líonra óstach.

Tar éis an péire veth a shocrú, glaonn an breiseán Bridge an breiseán IPAM CNI óstach-áitiúil. Is féidir an cineál breiseán IPAM a chumrú sa chumraíocht CNI a úsáideann an breiseán CRI chun an breiseán Flannel CNI a ghlaoch.

Breiseáin IPAM CNI óstach-áitiúil

Glaonna Bridge CNI breiseán IPAM óstach-áitiúil CNI leis an gcumraíocht seo a leanas:

{
  "name": "cni0",
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/24",
    "dataDir": "/var/lib/cni/networks"
  }
}

Breiseán IPAM óstach-áitiúil (IP Address Management - bainistíocht seoltaí IP) cuireann sé seoladh IP an choimeádáin ar ais ón bhfo-líon agus stórálann sé an IP leithdháilte ar an óstach san eolaire a shonraítear san alt dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. Tá aitheantas an choimeádáin a bhfuil an seoladh IP seo sannta dó sa chomhad seo.

Nuair a ghlaonn sé ar an mbreiseán IPAM óstach-áitiúil, cuireann sé na sonraí seo a leanas ar ais:

{
  "ip4": {
    "ip": "10.244.4.2",
    "gateway": "10.244.4.3"
  },
  "dns": {}
}

Achoimre

Sannann Kube-controller-manager podCIDR do gach nód. Faigheann pods gach nóid seoltaí IP ón spás seoltaí sa raon podCIDR leithdháilte. Ós rud é nach bhforluíonn podCIDRanna na nóid, faigheann na pods go léir seoltaí IP uathúla.

Cumraíonn agus suiteálann riarthóir braisle Kubernetes an kubelet, am rite coimeádáin, gníomhaire soláthraí líonra, agus cóipeann sé na forlíontáin CNI chuig gach nód. Le linn tosaithe, gineann gníomhaire an tsoláthraí líonra cumraíocht CNI. Nuair a bhíonn pod sceidealta chuig nód, cuireann an kubelet glaoch ar an mbreiseán CRI chun é a chruthú. Ansin, má úsáidtear coimeádán, glaonn an breiseán Coimeádán CRI an breiseán CNI atá sonraithe sa chumraíocht CNI chun líonra an choda a chumrú. Mar thoradh air sin, faigheann an pod seoladh IP.

Thóg sé roinnt ama dom tuiscint a fháil ar na subtleties agus nuances go léir na hidirghníomhaíochtaí. Tá súil agam go gcabhróidh an taithí seo leat tuiscint níos fearr a fháil ar conas a oibríonn Kubernetes. Má tá mé mícheart faoi rud ar bith, déan teagmháil liom ag Twitter nó ag an seoladh [ríomhphost faoi chosaint]. Ná bíodh leisce ort teagmháil a dhéanamh más mian leat gnéithe den alt seo nó aon rud eile a phlé. Ba bhreá liom comhrá a dhéanamh leat!

tagairtí

Coimeádáin agus líonra

Conas a oibríonn Flannel?

CRI agus CNI

PS ó aistritheoir

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment