Me pehea e whiwhi ai te Pod Kubernetes i tetahi wahitau IP?

Tuhipoka. whakamaori.: Ko tenei tuhinga, i tuhia e tetahi miihini SRE mai i LinkedIn, ka uru ki nga korero mo te makutu o roto i Kubernetes - he tika ake, ko te taunekeneke a CRI, CNI me te kube-apiserver - ka tupu i te wa e tika ana kia tohua he wahitau IP ki te pod e whai ake nei.

Ko tetahi o nga whakaritenga matua tauira whatunga Kubernetes me whai wahitau IP o ia pene me tetahi atu poti kei roto i te kohinga me taea te whakapā atu ki taua wahitau. He maha nga "kaiwhakarato" whatunga (Flannel, Calico, Canal, me etahi atu) e awhina ana ki te whakatinana i tenei tauira whatunga.

I te wa tuatahi i timata ahau ki te mahi tahi me Kubernetes, kaore i tino marama ki ahau me pehea e whiwhi ai nga pods i o ratou wahitau IP. Ahakoa te maarama ki te mahi o nga waahanga takitahi, he uaua te whakaaro ki te mahi tahi. Hei tauira, i mohio ahau he aha nga taputapu CNI, engari kaore au i te mohio ki te pehea i kiia ai. Na reira, i whakatau ahau ki te tuhi i tenei tuhinga ki te tohatoha matauranga mo nga momo waahanga whatunga me te mahi tahi i roto i te roopu Kubernetes, e taea ai e ia pod te tiki i tana ake wahitau IP motuhake.

He rereke nga huarahi ki te whakariterite i te whatunga ki Kubernetes, pera ano he rereke nga whiringa wa whakahaere mo nga ipu. Ka whakamahia e tenei panui Tuhinga ki te whakarite i tetahi whatunga ki roto i te kapoi, me te hei taiao kawe - Pouaka. Kei te whakaaro ano ahau kei te mohio koe ki te mahi a te whatunga i waenga i nga ipu, no reira ka korero poto noa ahau, mo te horopaki noa.

Ētahi ariā taketake

Ipu me te Whatunga: He Tirohanga Poto

He maha nga whakaputanga pai i runga i te Ipurangi e whakamarama ana me pehea te whakawhitiwhiti korero a nga ipu ki a raatau ano i runga i te whatunga. No reira, ka hoatu e ahau he tirohanga whanui mo nga ariā taketake me te whakawhäiti i ahau ki te huarahi kotahi, ko te hanga piriti Linux me nga kohinga whakauru. Ka waihohia nga korero, na te mea ko te kaupapa o te whatunga ipu ka tika he tuhinga motuhake. Ko nga hononga ki etahi pukapuka tino mohio me te maatauranga ka tukuna i raro nei.

Nga ipu kei runga i tetahi kaihautu

Ko tetahi huarahi ki te whakarite korero ma nga wahitau IP i waenga i nga ipu e rere ana i runga i te ope kotahi ko te hanga piriti Linux. Mo tenei kaupapa, ka hangaia nga taputapu mariko ki Kubernetes (me Docker) veth (ethernet mariko). Ko tetahi pito o te taputapu veth e hono ana ki te mokowāingoa whatunga o te ipu, ko tetahi ki te piriti Linux i runga i te whatunga manaaki.

Ko nga ipu katoa kei runga i te ope kotahi he pito o te veth e hono ana ki te piriti e taea ai e ratou te whakawhitiwhiti korero ki a raatau ma nga wahitau IP. He wahitau IP ano to te piriti Linux me te mahi hei keeti mo nga waka puta mai i nga pona kua whakaritea mo etahi atu pona.

Me pehea e whiwhi ai te Pod Kubernetes i tetahi wahitau IP?

Nga ipu kei runga i nga kaihautu rereke

Ko te whakaurunga o te paatete tetahi tikanga e taea ai e nga ipu kei runga i nga waahanga rereke te korero ki a raatau ano ma te whakamahi i nga wahitau IP. I Flannel, ko te hangarau te kawenga mo tenei whai waahi. vxlan, ka "whakapakoko" i te kete taketake ki roto i te kete UDP ka tukuna atu ki tona haerenga.

I roto i te huinga Kubernetes, ka hangaia e Flannel he taputapu vxlan me te whakahou i te ripanga ara ki ia node. Ko ia putea kua whakaritea mo tetahi ipu i runga i tetahi kaihautu rereke ka haere ki roto i te taputapu vxlan ka whakauruhia ki roto i te putea UDP. I te taunga, ka tangohia te kete kua oti te kohanga ka tukuna atu ki te peera e hiahiatia ana.

Me pehea e whiwhi ai te Pod Kubernetes i tetahi wahitau IP?
Tuhipoka: He huarahi kotahi tenei ki te whakarite i nga whakawhitiwhitinga whatunga i waenga i nga ipu.

He aha te CRI?

CRI (Atanga Wā Whakahaere Ipu) he monomai e taea ai e kubelet te whakamahi i nga waahi rereke rereke. Ko te API CRI kua hangaia ki roto i nga momo waa whakahaere, na reira ka taea e nga kaiwhakamahi te kowhiri i te waa whakahaere e hiahia ana ratou.

He aha te CNI?

Kaupapa CNI Ko te whakaritenga ki te whakarite i tetahi otinga whatunga ao mo nga ipu Linux. I tua atu, kei roto monomai, te kawenga mo nga momo mahi i te wa e whakatuu ana i te whatunga pod. Ko te monomai CNI he konae ka taea te kawe e u ana ki nga whakaritenga (ka korerohia e matou etahi mono i raro nei).

Te tohatoha o nga kupenga-roto ki nga pona mo te tautapa i nga wahitau IP ki nga poti

I te mea me whai wahitau IP ia pod i roto i te tautau, he mea nui ki te whakarite he ahurei tenei wahitau. Ka tutuki tenei ma te tautapa ki ia node he kupenga-roto ahurei, no reira ka tautapahia nga pona kei runga i taua pona nga wahitau IP.

Node IPAM Kaiwhakahaere

Ahea nodeipam i tukuna hei tawhā haki --controllers kube-kaiwhakahaere-kaiwhakahaere, ka tohatohahia he kupengaroto motuhake (podCIDR) ki ia node mai i te roopu CIDR (arā, te awhe o nga wahitau IP mo te whatunga tautau). I te mea karekau enei podCIDRs e inaki, ka taea mo ia pod te toha he wahitau IP ahurei.

Ko te node Kubernetes ka tautapahia he podCIDR i te wa i rehitatia tuatahitia ki te tautau. Hei huri i te podCIDR o nga pona, me whakakorehia e koe, ka rehita ano, ka huri tika ki te whirihoranga apa mana Kubernetes i waenganui. Ka taea e koe te whakaatu i te podCIDR o te node ma te whakamahi i te whakahau e whai ake nei:

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

Kubelet, wa whakahaere ipu me nga monomai CNI: pehea te mahi katoa

Ko te whakarite i tetahi pona mo ia node he maha nga waahanga whakarite. I roto i tenei waahanga, ka aro noa ahau ki nga mea e pa ana ki te whakarite i te whatunga pod.

Ma te whakarite i tetahi pona ki tetahi pona ka paheke te rarangi o nga huihuinga e whai ake nei:

Me pehea e whiwhi ai te Pod Kubernetes i tetahi wahitau IP?

Āwhina: Hangahanga o Containerd CRI monomai.

Te taunekeneke i waenga i te waa whakahaere ipu me nga taputapu CNI

Kei ia kaiwhakarato whatunga tana ake mono CNI. Ko te wa whakahaere o te ipu ka rere ki te whirihora i te kupenga mo te pākākano ka tiimata ana. I roto i te take o containerd, ka whakarewahia te mono CNI e te mono Pouaka CRI.

I tua atu, kei ia kaiwhakarato tana ake kaihoko. Kua whakauruhia ki runga i nga pona Kubernetes katoa, a, kei a ia te kawenga mo te whirihoranga whatunga o nga pona. Kua whakauruhia tenei kaihoko ki te whirihora CNI, ka hanga takitahi ranei i runga i te node. Ka awhina te whirihora i te huinga mono CRI e karangahia ana e te mono CNI.

Ko te waahi o te whirihora CNI ka taea te whakarite; na te taunoa kei roto /etc/cni/net.d/<config-file>. Ko nga kaiwhakahaere o te roopu roopu he kawenga mo te whakauru i nga taputapu CNI ki ia node kahui. Ko to raatau waahi ka taea hoki te whakarite; whaiaronga taunoa - /opt/cni/bin.

I te wa e whakamahi ana i te containerd, ka taea te whakarite i nga huarahi mo te whirihora mono me nga takirua ki te waahanga [plugins.«io.containerd.grpc.v1.cri».cni] в kōnae whirihoranga ipu.

I te mea kei te whakamahi matou i a Flannel hei kaiwhakarato whatunga, me korero iti mo te whakarite:

  • Ko te Flanneld (Flannel's daemon) ka whakauruhia ki roto i te tautau hei DaemonSet me install-cni rite ipu init.
  • Install-cni hanga Kōnae whirihoranga CNI (/etc/cni/net.d/10-flannel.conflist) i ia pona.
  • Ka hangaia e Flanneld he taputapu vxlan, ka tango i nga metadata whatunga mai i te tūmau API, ka aro turuki i nga whakahōutanga pod. I te wa i hangaia ai, ka tohatohahia nga huarahi ki nga poro katoa puta noa i te kohinga.
  • Ko enei huarahi ka taea e nga pods te korero ki a ratau ma nga wahitau IP.

Mo etahi atu korero mo nga mahi a Flannel, ka tūtohu ahau ki te whakamahi i nga hononga kei te mutunga o te tuhinga.

Anei he hoahoa o te taunekeneke i waenga i te Containerd CRI mono me nga CNI monomai:

Me pehea e whiwhi ai te Pod Kubernetes i tetahi wahitau IP?

Ka taea e koe te kite i runga ake nei, ka karangahia e te kubelet te mono Containerd CRI ki te hanga i te pod, ka karangahia te mono CNI hei whirihora i te whatunga o te pod. Ma te mahi pera, ka karangahia e te CNI monomai a te kaiwhakarato whatunga etahi atu monomai CNI matua hei whirihora i nga momo ahuatanga o te whatunga.

Te taunekeneke i waenga i nga taputapu CNI

He maha nga momo monomai CNI ko ta raatau mahi he awhina ki te whakarite i nga whakawhitiwhiti korero i waenga i nga ipu kei runga i te kaihautu. Ka korero tenei tuhinga e toru o enei.

CNI mono Flannel

I te wa e whakamahi ana i a Flannel hei kaiwhakarato whatunga, ka waea te waahanga Containerd CRI CNI mono Flannelte whakamahi i te kōnae whirihoranga 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
      }
    }
  ]
}

Ka mahi tahi te mono Flannel CNI me Flanneld. I te tiimatanga, ka tikina e Flanneld te podCIDR me etahi atu korero e pa ana ki te whatunga mai i te tūmau API ka penapena ki te konae /run/flannel/subnet.env.

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

Ka whakamahia e te mono Flannel CNI nga raraunga mai i /run/flannel/subnet.env ki te whirihora me te karanga i te mono piriti CNI.

CNI mono Piriti

Ka karangahia tenei mono me te whirihoranga e whai ake nei:

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

Ka karangahia mo te wa tuatahi, ka hangaia he piriti Linux me «name»: «cni0», e tohuhia ana i te whirihora. Katahi ka hangaia he takirua veth mo ia pene. Ko tetahi pito e hono ana ki te waahi ingoa whatunga o te ipu, ko tetahi atu kei roto i te piriti Linux i runga i te whatunga manaaki. CNI mono Piriti ka hono i nga ipu manaaki katoa ki te piriti Linux i runga i te whatunga manaaki.

Ka mutu te whakarite i te takirua veth, ka karangahia e te mono Bridge te mono IPAM CNI host-rohe. Ko te momo mono IPAM ka taea te whirihora i roto i te whirihora CNI e whakamahia ana e te mono CRI hei karanga i te mono Flannel CNI.

Kaihautū-rohe IPAM CNI monomai

Ka karanga a Bridge CNI Kaihautū-rohe IPAM mono CNI me te whirihoranga e whai ake nei:

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

mono IPAM kaihautū-rohe (IP Awhakairi Mte whakahaere - te whakahaere i te wahitau IP) ka whakahoki i te wahitau IP mo te ipu mai i te ipurangiroto me te penapena i te IP kua tohaina ki te kaihautu i roto i te raarangi kua tohua ki te waahanga dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. Kei roto i tenei konae te ID o te ipu i tautapa ai tenei wahitau IP.

Ina waea ana ki te mono IPAM-a-rohe, ka whakahokia mai nga raraunga e whai ake nei:

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

Whakarāpopoto

Ka tautapa e Kube-kaiwhakahaere-kaiwhakahaere he podCIDR ki ia node. Ka whiwhi nga pona o ia pona i nga wahitau IP mai i te mokowā wāhitau i te awhe podCIDR kua tohatohahia. I te mea kaore nga podCIDR o nga pona e inaki, ka whiwhi nga pene katoa i nga wahitau IP ahurei.

Ka whirihorahia, ka whakauruhia e te kaiwhakahaere roopu Kubernetes te kubelet, te wa whakahaere ipu, te kaihoko kaiwhakarato whatunga, me te kape i nga monomai CNI ki ia node. I te tiimatanga, ka hangaia e te kaihoko kaiwhakarato whatunga he whirihora CNI. Ina whakaritea he pod ki tetahi node, ka karanga te kubelet ki te mono CRI hei hanga. I muri mai, ki te whakamahia te containerd, ka karangahia e te Containerd CRI mono te mono CNI kua tohua ki te whirihora CNI hei whirihora i te whatunga o te pod. Ko te mutunga, ka whiwhi te pod i tetahi wahitau IP.

He wa roa ahau ki te mohio ki nga hianga me nga ahuatanga o enei taunekeneke katoa. Ko taku tumanako ka awhina tenei wheako ki a koe kia pai ake te mohio ki te mahi a Kubernetes. Mena kei te he ahau mo tetahi mea, tena waea mai ki ahau Twitter i te wahi noho ranei [email tiakina]. Tena koa whakapā mai ki te hiahia koe ki te matapaki i nga ahuatanga o tenei tuhinga, i etahi atu mea ranei. Ka pai ahau ki te korero ki a koe!

tohutoro

Nga ipu me te whatunga

He pehea te mahi a Flannel?

CRI me CNI

PS mai i te kaiwhakamaori

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero