Flanell vs Calico: L2 ja L3 põhineva võrgundusvõrgustiku lahing

Täna arutame konteinerite maailmas ja peamiselt K8-de kontekstis võrgustike loomist. Me ei hõlma poliitikaid ja eraldatust, vaid ainult seda, kuidas L2 ja L3 mängivad rolli pakettide voogudes.

Flanell on ülekattega võrgumehhanism, kus nagu Calico on põhimõtteliselt puhas L3-mäng.

Flanell töötab vxlani seadmega koos tarkvaralülitiga nagu linux bridge või ovs.

Konteineris A, kui üritatakse jõuda konteinerisse B erineval hostil, suunatakse liiklus VETH-paari kaudu host A-sillale. Seejärel proovib ARP-il põhinev sild hankida konteineri B mac. Kuna konteiner B ei ole hostis, edastatakse sillaga liiklus L2-s vxlani seadmesse (tarkvara TAP-seade), mis seejärel võimaldab flanell-deemoni tarkvaral neid pakette hõivata ja mähkige seejärel LDP-paketti, et transportida UDP abil füüsilises võrgus. Samuti lisatakse paketti vxlani sildistamine, et isoleerida neid üürnike vahel.

Flanell on näidatud skemaatiliselt

Calico puhul on lähenemisviis vähe erinev. Calico töötab 3. kihil ja sõltub pakettide teisaldamiseks Linuxi marsruutimisest.

Calico sisestab selle IP 169.254.1.1 konteinerisse värava jaoks marsruutimisreegli.

vaikimisi 169.254.1.1 dev eth0 kaudu

169.254.1.1 dev eth0 ulatuse link

See tähendab, et kogu konteineri liiklus üritab kõigepealt minna vaikelüüsi IP-le. Kuna vaikelüüsi IP-le pääseb juurde aadressil eth0, saadetakse ARP-i päring eth0-le, et määrata gateway IP-aadressi mac aadress.

Trikk on siin arpi puhverserver, mis on konfigureeritud hosti poolel asuvas seadmes.
See arpi puhverserver vastab tagasi oma AR-iga ARP-i päringule 169.254.1.1.

Pärast selle resolutsiooni saatmist saadetakse pakid vahtimisseadmesse koos konteineri lähte-IP ja sihtkonteineri IP-ga. Siit alates algab masina L3 marsruutimine, mis teab, kuidas marsruutida sihtkonteineri IP-le.

Masinate marsruudid sünkroonitakse BGP protokolli kaudu. Igas hostis töötab BGP klient (lind), mis tagab, et igal hostil on värskendatud marsruudid.

Nii et siin näete Calico lahenduses, saime lahti tarkvara sildadest ja säilitasime ka lähteteksti IP.

Skemaatiliselt on vooluhulk näidatud allpool

Ka ülekatte keerukus jääb välja ja see on puhas L3 lahendus, mis põhineb lihtsalt Interneti toimimise põhimõtetel. Kuna me kasutame marsruutimispõhimõtteid, mitte L2 levialasid, siis on vlani vajadus välistatud. Üürnike spetsiifiliste võrguvoogude asemel kasutab Calico iptables põhinevat mehhanismi.

Nii et kui proovime lihtsalt võrrelda, kuidas öelda, et sillapõhine kommunikatsioon toimub võrreldes puhta L3-teabevahetusega, siis on erinevus selles, et silla korral toimib sillaseade IP konteinerite lüüsina ja seega järgmine liiklus liikluse jaoks, mis ei ole sama levi piires domeen suunatakse silla seadmesse. See võimaldab hostil linuxi kernelil L3 marsruutimist rakendada (marsruutimisreeglid on konfigureeritud edastama pakette vm-le, kus asub sihtkonteiner) või edastatakse need kraaniseadmele, et anda võimalus pakettide tunnustamiseks GRE-i kaudu / vxlan.

Vastupidi, Calico lähenemisviis tugineb puhverserveri ARP-mehhanismile, et edastada pakett hosti poolel asuvasse harukontorisse ja uuesti liikluse suunamiseks marsruuti rakendades. Nii et kui me seda hoolikalt analüüsime, asendatakse sild tehniliselt puhverserveri ARP-ga ja marsruudi sünkroonimine toimub üle BGP.

Lisateavet Calico kohta leiate aadressilt https://www.projectcalico.org/

Sisuliselt saavad vm või konteinerite paketid kasutada ühte järgmistest mehhanismidest, et suhelda teiste hostide konteinerite / vmsidega

  1. Kasutage ülekatteid nagu GRE / VXLAN
  2. kasutage NAT-i, et saata pakette serverisse
  3. kasutage puhta L3-marsruudiga Calico-sarnast mehhanismi, ilma NAT-i ja sildu kasutamata. See võimaldab säilitada allika IP-d ja turbepoliitikat saab sisendallika IP-de põhjal adekvaatselt rakendada

Kui otsite virtualiseerimise ja konteinerite sisemiste toodete kohta põhjalikumat teavet, lugege seda blogi autori raamatut

https://leanpub.com/linuxcontainersandvirt

https://www.amazon.com/dp/1080299424?ref_=pe_3052080_397514860

Kohustustest loobumine: Ülaltoodud seisukohad on isiklikud ja mitte ettevõtte, kus töötan.