Sida boodhka Kubernetes uu u helo ciwaanka IP-ga

Ogow. turjumiMaqaalkan, oo uu qoray injineer SRE ah oo ka socda LinkedIn, ayaa si faahfaahsan uga hadlaya sixirka gudaha ee Kubernetes - si sax ah, isdhexgalka CRI, CNI iyo kube-apiserver - taasi waxay dhacdaa marka boodhka xiga loo baahan yahay in loo qoondeeyo cinwaanka IP-ga.

Mid ka mid ah shuruudaha aasaasiga ah Qaabka shabakadda Kubernetes waa in boodh kastaa uu leeyahay ciwaanka IP-ga u gaar ah oo boodh kasta oo kale ee kutlada ku jira waa in uu awoodaa in uu kala xidhiidho ciwaankaas. Waxaa jira shabakado badan oo "bixiyeyaal" (Flannel, Calico, Canal, iwm.) kuwaas oo gacan ka geysta hirgelinta qaabkan shabakadda.

Markii ugu horreysay ee aan bilaabay la shaqaynta Kubernetes, gabi ahaanba iimay caddayn sida saxda ah ee boodhadhku u helaan ciwaankooda IP-ga. Xataa iyadoo la fahmayo sida qaybaha gaarka ahi u shaqeeyaan, way adkayd in la qiyaaso inay wada shaqaynayaan. Tusaale ahaan, waan ogaa waxa CNI plugins u ahaa, laakiin maan wax fikrad ah u lahayn sida saxda ah ee loogu yeedhay. Sidaa darteed, waxaan go'aansaday inaan qoro maqaalkan si aan u wadaago aqoonta ku saabsan qaybaha kala duwan ee shabakadaha iyo sida ay u wada shaqeeyaan kutlada Kubernetes, taas oo u oggolaanaysa mid kastaa inuu helo ciwaanka IP-ga gaarka ah.

Waxaa jira habab kala duwan oo loo abaabulo isku xirka Kubernetes, sida ay jiraan doorashooyin runtime kala duwan oo loogu talagalay weelasha. Daabacaaddan ayaa isticmaali doonta Flannel in la abaabulo shabakad koox koox ah, iyo deegaan la fulin karo Konteenar. Waxa kale oo aan samaynayaa malo ah inaad ogtahay sida isku xidhka weelku u shaqeeyo, markaa waxaan si kooban u taaban doonaa, kaliya macnaha guud.

Qaar ka mid ah fikradaha aasaasiga ah

Konteenarada iyo Shabakadda: Dulmar kooban

Waxaa jira daabacado aad u wanaagsan oo badan oo ku jira internetka kuwaas oo sharaxaya sida weelku isugula xiriiraan shabakada. Sidaa darteed, kaliya waxaan bixin doonaa dulmar guud oo ku saabsan fikradaha aasaasiga ah waxaanan ku xaddidi doonaa naftayda hal hab, taas oo ku lug leh abuurista buundada Linux iyo xirmooyinka xirmooyinka. Faahfaahinta waa la dhaafay, maadaama mawduuca isku xidhka weelka laftiisa uu mudan yahay maqaal gaar ah. Xidhiidhada qaar ka mid ah qoraalada aqoonta gaarka ah leh ayaa lagu bixin doonaa hoosta.

Koonteennarada ku jira hal marti-geliyaha

Hal dariiqo oo lagu abaabulo isgaadhsiinta iyada oo loo marayo ciwaannada IP ee u dhexeeya weelasha ku shaqeeya isla martigeliyaha waxay ka mid tahay abuurista buundada Linux. Ujeedadan awgeed, aaladaha casriga ah ayaa lagu abuuray Kubernetes (iyo Docker) veth (virtual ethernet). Hal cidhif oo ka mid ah aaladda veth-ka ayaa ku xidha meesha isku xidhka weelka, kan kalena waa Buundada Linux shabakada martida loo yahay.

Dhammaan weelasha ku jira isla martigeliyaha waxay leeyihiin hal daraf oo fiilada ah oo ku xiran buundada taas oo ay ku wada xiriiraan midba midka kale iyada oo loo marayo cinwaannada IP. Buundada Linux sidoo kale waxay leedahay ciwaanka IP-ga waxayna u shaqeysaa sidii albaab laga galo taraafikada ka soo baxa boodhka loo qoondeeyay qanjidhada kale.

Sida boodhka Kubernetes uu u helo ciwaanka IP-ga

Weeladaha ku jira martigeliyaha kala duwan

Xiritaanka baakidhku waa hal hab oo u oggolaanaya weelasha qanjidhada kala duwan inay ku wada xiriiraan midba midka kale iyadoo la adeegsanayo cinwaannada IP-ga. Flannel, tignoolajiyada ayaa mas'uul ka ah fursadan. vxlan, kaas oo "baakadaha" ku dhejiya baakidhka asalka ah ee UDP ka dibna u diraya meeshii uu ku socday.

Kutlada Kubernetes, Flannel waxay abuurtaa aalladda vxlan oo waxay cusboonaysiisaa miiska waddada ee nood kasta si waafaqsan. Baakad kasta oo loogu talagalay weel ku jira marti-geliyaha kala duwan wuxuu sii maraa aaladda vxlan waxaana lagu duubay baakidh UDP ah. Meesha loo socdo, baakadka buulka leh ayaa la soo saarayaa oo loo gudbiyaa baqsha la rabo.

Sida boodhka Kubernetes uu u helo ciwaanka IP-ga
Fiiro gaar ah: Tani waa hal dariiqo oo kaliya oo lagu abaabulo xiriirka shabakada ee weelasha dhexdooda.

Waa maxay CRI?

CRI (Container Interface Runtime) waa plugin u ogolaanaya kubelet in ay isticmaalaan weel kala duwan oo ku saabsan jawi runtime. CRI API waxa loo dhisay runtimes kala duwan, si isticmaalayaashu ay u dooran karaan wakhtiga runtime ee ay doorteen.

Waa maxay CNI?

Mashruuca CNI waa a qeexid si loo abaabulo xal shabakad caalami ah oo loogu talagalay weelasha Linux. Intaa waxaa dheer, waxaa ka mid ah plugins, mas'uul ka ah hawlo kala duwan marka la samaynayo shabakad pod. Plugin CNI waa fayl la fulin karo oo u hoggaansamaya qeexida (waxaan ka wada hadli doonaa qaar ka mid ah plugins hoos).

Qoondaynta shabakadaha hoose ee noodhka si loogu meeleeyo ciwaanada IP-ga pods

Mar haddii boodh kasta oo kutlada ku jira ay tahay inuu lahaado ciwaanka IP-ga, waa muhiim in la hubiyo in ciwaankani yahay mid gaar ah. Tan waxaa lagu gaaraa iyada oo loo qaybiyo nood kasta shabakad hoose oo gaar ah, kaas oo galalka ku yaala noodhkaas loo qoondeeyay cinwaanno IP ah.

Xakamaynta IPAM ee martida loo yahay

Goorma nodeipam u gudubtay halbeeg calanka --controllers kube-controller-maareeyaha, waxay u qoondaynaysaa shabakad hoose (podCIDR) mid kasta oo ka mid ah kooxda CIDR (sida, tirada ciwaanada IP-ga ee shabakada kooxda). Mar haddii podCIDRs-yadaan aysan is-dul-qaadan karin, waxaa suurtogal ah in boodh walba loo qoondeeyo cinwaan IP gaar ah.

Kubernetes noode waxa loo qoondeeyaa podCIDR marka ugu horaysa laga diiwaan galiyo kooxda. Si aad u bedesho podCIDR-ka qanjidhada, waxaad u baahan tahay inaad iska diiwaan geliso oo aad dib-u-diiwaangeliso, samaynta isbeddel ku habboon qaabaynta lakabka xakamaynta Kubernetes ee u dhexeeya. Waxaad soo bandhigi kartaa podCIDR-ka noode adoo isticmaalaya amarka soo socda:

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

Kubelet, weel runtime ah iyo CNI plugins: sida ay u wada shaqeeyaan

Jadwalka budh-badhkiiba waxay ku lug leedahay tillaabooyin badan oo diyaarin ah. Qaybtan, waxaan diiradda saari doonaa oo kaliya kuwa sida tooska ah ula xiriira dejinta shabakada pods.

Jadwalka budh-socod ee nood gaar ah waxa ay kicisaa dhacdooyinka soo socda:

Sida boodhka Kubernetes uu u helo ciwaanka IP-ga

Caawimaad: Naqshadeynta kontaynarrada CRI-ga.

Is-dhexgalka u dhexeeya wakhtiga ku-socodka weelka iyo plugins-yada CNI

Bixiye kasta oo shabakadeed wuxuu leeyahay plugin CNI u gaar ah. Wakhtiga runtime ee weelku waxa uu wadaa si uu u habeeyo shabakada boodhka marka uu bilaabo. Xaaladda weelka, plugin CNI waxaa bilaabay plugin Kontaynarada CRI.

Waxaa intaa dheer, bixiye kastaa wuxuu leeyahay wakiil u gaar ah. Waxaa lagu rakibay dhammaan qanjidhada Kubernetes waxayna mas'uul ka tahay qaabeynta shabakadda pods. Wakiilkan waxaa lagu daray qaabaynta CNI ama si madax-banaan ugu abuuraa noodhka. Habayntu waxa ay caawisaa plugin CRI dejisan taas oo CNI plugin si ay u wac.

Goobta qaabka CNI waa la habeyn karaa; by default waa in /etc/cni/net.d/<config-file>. Maamulayaasha kooxda ayaa sidoo kale mas'uul ka ah ku rakibida fiilooyinka CNI ee noodhka koox kasta. Meeshooda sidoo kale waa la beddeli karaa; tusaha caadiga ah - /opt/cni/bin.

Markaad isticmaalayso weel, waddooyinka isku xidhka plugin iyo binaries ayaa lagu dejin karaa qaybta [plugins.Β«io.containerd.grpc.v1.criΒ».cni] Π² faylka qaabeynta weelka.

Maadaama aan Flannel u isticmaalno bixiyaha shabakadeena, aan wax yar ka hadalno dejinta:

  • Flanneld (Flannel's daemon) waxaa badanaa lagu rakibaa koox sida DaemonSet oo leh install-cni sida weel init.
  • Install-cni abuuraa CNI faylka qaabeynta (/etc/cni/net.d/10-flannel.conflist) dud kasta.
  • Flanneld waxa uu abuuraa qalab vxlan, waxa uu ka soo qaataa xogta badan ee shabakada serverka API, waxa aanu la socdaa wararka cusub Sida la abuuray, waxay u qaybisaa dariiqyada dhammaan baloogyada kutlada oo dhan.
  • Dariiqyadani waxay u oggolaanayaan boodhadhku inay ku wada xiriiraan midba midka kale iyada oo loo marayo cinwaannada IP-ga.

Si aad u hesho macluumaad faahfaahsan oo ku saabsan shaqada Flannel, waxaan ku talinayaa in la isticmaalo isku xirka dhamaadka maqaalka.

Waa kan jaantuska is dhexgalka ka dhexeeya kontaynarrada CRI plugin iyo plugins-yada CNI:

Sida boodhka Kubernetes uu u helo ciwaanka IP-ga

Sida aad kor ku arki karto, kubelet-ku wuxuu wacaa plugin CRI Containerd si uu u abuuro pod, kaas oo markaa wacaya plugin CNI si uu u habeeyo shabakadda pods. Marka sidaas la sameeyo, bixiyaha shabakada CNI plugin wuxuu wacaa pluginsyada kale ee muhiimka ah ee CNI si loo habeeyo qaybaha kala duwan ee shabakada.

Isdhexgalka ka dhexeeya plugins CNI

Waxaa jira noocyo kala duwan oo CNI ah oo shaqadoodu tahay inay gacan ka geystaan ​​samaynta xidhiidhka shabakada ee u dhexeeya weelasha martida loo yahay. Maqaalkani waxa uu ka hadli doonaa saddex ka mid ah.

CNI plugin Flannel

Markaad Flannel u isticmaalayso bixiye shabakad ahaan, qaybta CRI ee Kontaynarada ayaa wacaysa CNI plugin Flanneliyadoo la isticmaalayo faylka qaabeynta 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
      }
    }
  ]
}

Qalabka Flannel CNI wuxuu la shaqeeyaa Flanneld. Inta lagu jiro bilawga, Flanneld waxa uu soo saara podCIDR iyo faahfaahinta kale ee la xidhiidha shabakada API server-ka oo ku kaydiya fayl /run/flannel/subnet.env.

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

Qalabka Flannel CNI wuxuu isticmaalaa xogta /run/flannel/subnet.env in la habeeyo oo wac plugin CNI buundada.

CNI plugin Bridge

Plugin-kan waxaa lagu magacaabaa qaabeynta soo socota:

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

Marka ugu horeysa ee loo yeero, waxay abuurtaa buundada Linux Β«nameΒ»: Β«cni0Β», kaas oo lagu tilmaamay qaabeynta. Kadibna waxaa loo sameeyay labo-jiif (veth pair) mid kasta. Mid ka mid ah dhamaadka wuxuu ku xiran yahay magaca shabakada weelka, kan kalena wuxuu ku jiraa buundada Linux ee shabakada martida loo yahay. CNI plugin Bridge wuxuu isku xiraa dhammaan weelasha martida loo yahay buundada Linux ee shabakadda martida loo yahay.

Markuu dhammeeyey dejinta lammaanaha veth-ka, plugin-ka Bridge wuxuu wacaa plugin-maxalli ah IPAM CNI. Nooca plugin ee IPAM waxaa lagu habeyn karaa qaabka CNI ee plugin CRI uu u isticmaalo inuu ugu yeero plugin CNI Flannel.

IPAM CNI plugins-maxalli ah

Wicitaanada Bridge CNI IPAM plugin CNI-maxalli ah qaabeynta soo socota:

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

Plugin IPAM-maxalli ah (IP Agogosha Mmaamulida - maamulka cinwaanka IP) wuxuu ka soo celiyaa cinwaanka IP-ga weelka ee subnet wuxuuna ku kaydiyaa IP-ga loo qoondeeyay martigeliyaha ee tusaha lagu cayimay qaybta dataDir - /var/lib/cni/networks/<network-name=cni0>/<ip>. Faylkan waxa uu ka kooban yahay aqoonsiga weelka loo qoondeeyay cinwaanka IP-ga

Markaad wacdo goobta IPAM plugin-ka-maxalli ah, waxay soo celisaa xogta soo socota:

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

Soo koobid

Kube-controller- maareeyaha wuxuu ku meeleeyaa podCIDR-ka nood kasta. Qaybaha nood kasta waxay ka helayaan ciwaanka IP-ga meesha ciwaanka ee baaxadda podCIDR ee loo qoondeeyay. Maaddaama podCIDR-yada noodes-yada aysan is-kordhin, dhammaan boodhadhku waxay helayaan cinwaanno IP gaar ah.

Maamulaha kutlada Kubernetes ayaa habeeya oo rakiba kubelet, weelka runtime, wakiilka bixiyaha network, iyo koobiyo plugins CNI ee nood kasta. Inta lagu jiro bilowga, wakiilka bixiyaha shabakadu wuxuu abuuraa habaynta CNI. Marka boodhka loo jadwaleeyo inuu galo, kubelet wuxuu wacaa plugin CRI si uu u sameeyo. Marka xigta, haddii weel la isticmaalo, Plugin Containerd CRI waxay wacdaa plugin CNI ee ku qeexan qaabka CNI si loo habeeyo shabakadda pods-ka. Natiijo ahaan, boodhku wuxuu helayaa cinwaanka IP-ga.

Waxay igu qaadatay wakhti inaan fahmo dhammaan khiyaanada iyo nuxurka dhammaan is-dhexgalkaas. Waxaan rajeynayaa in khibradani ay kaa caawin doonto inaad si fiican u fahamto sida Kubernetes u shaqeeyo. Haddii aan wax ka qaldanahay, fadlan igala soo xidhiidh Twitter ama cinwaanka [emailka waa la ilaaliyay]. Xor baad u tahay inaad la xidhiidho haddii aad jeclaan lahayd inaad ka hadasho qaybaha maqaalkan ama wax kale. Waxaan jeclaan lahaa inaan kula sheekaysto!

tixraacyada

Konteenarada iyo shabakada

Sidee u shaqeeyaa Flannel?

CRI iyo CNI

PS ka turjumaan

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment