Hiljuti olen töötanud PaaS-sisu kallal ja sattusin just kokku Kubernetesiga, mis hõlmab võrgukatvust, st suhtlust hostideüleiste konteinerite vahel. Nii on tekkinud rida avatud lähtekoodiga komponente, nagu flanell, kaliko, kudumine jne. Siin on peamiselt Calico ja Fannel.
Flanellprintsiip
Flannel, CoreOS-i arendatud projekt, on tõenäoliselt kõige otsesem ja populaarsem CNI plugin. See on üks küpsemaid näiteid võrguarhitektuurist konteinerite orkestreerimissüsteemides ning on loodud võimaldama paremat konteineritevahelist ja hostidevahelist võrgustikku. CNI kontseptsiooni tõusuga on Flannel CNI plugin varajane tutvustus.
Flanell on võrreldes teiste valikutega suhteliselt lihtne paigaldada ja seadistada. See on pakendatud ühe binaarse FlannelD-na ning paljud levinud Kubernetes'i klastrijuurutustööriistad ja paljud Kubernetes distributsioonid saavad vaikimisi Flannel'i paigaldada. Flannel saab kasutada olemasolevat Kubernetes'i klastri etcd klastrit, et salvestada oma olekuinfot API abil, seega ei vaja ta spetsiaalset andmesalvestust.
Flannel seadistab kihi 3 IPv4 ülekattevõrgu. See loob suure sisevõrgu, mis hõlmab kõiki klastri sõlmesid. Selles ülekattevõrgus on igal sõlmel alamvõrk, mida kasutatakse IP-aadresside sisemiseks määramiseks. Podi konfigureerimisel määrab iga sõlme Dockeri sildliides igale uuele konteinerile aadressi. Samas hostis olevad kapslid saavad suhelda Dockeri sildade kaudu, samas kui erinevate hostide podid kasutavad flaneldi, et kapseldada oma liiklus UDP pakettidesse, et suunata need õigesse sihtkohta.
Flanellil on mitut erinevat tüüpi taustasüsteeme, mida saab kasutada kapseldamiseks ja marsruutimiseks. Vaikimisi ja soovitatav lähenemine on kasutada VXLAN-i, sest VXLAN töötab paremini ja vajab vähem käsitsi sekkumist.
Calico arhitektuur
Kaliko sisaldab järgmisi olulisi komponente: Felix jne, BGP klient ja BGP marsruudi peegeldaja. Järgnevalt on toodud iga komponendi selgitused.
Felix: Peamiselt vastutab marsruutimise konfiguratsiooni, ACLS reeglite konfiguratsiooni ja edastamise eest, see eksisteerib igas sõlmes.
etcd: Hajutatud võtme-väärtuse salvestus, mis vastutab peamiselt võrgu metaandmete järjepidevuse eest ja tagab Calico võrguoleku täpsuse, saab jagada Kubernetesiga;
BGPClient (BIRD) vastutab peamiselt Felixi poolt kernelile kirjutatud marsruutimisinfo edastamise eest praegusele Calico võrgule, et tagada töökoormuste vahelise suhtluse tõhusus.
BGPRoute Reflector (BIRD) kasutatakse suuremahulistes juurutustes, loobudes mesh-režiimist, kus kõik sõlmed omavahel ühendatakse, ning kasutades ühte või mitut BGPRoute Reflectorit tsentraliseeritud marsruutimise ja jaotuse lõpuleviimiseks.
Calico printsiip
Nagu järgneval diagrammil näidatud, kujutatakse protsess lähtekonteinerist läbi lähtehosti, andmekeskuse marsruutimise kaudu ja lõpuks sihtkonteinerini ning lõpuks määratud sihtkonteinerile.
Kontrast
Ülaltoodud põhimõttest on näha, et flanell teostab pakettide lahtipakkimise protsesse marsruutimise suunamise alusel, mis raiskab CPU arvutusressursse. Allolev diagramm võrdleb erinevate avatud lähtekoodiga võrgukomponentide jõudlust, mis on veebis leitud. On näha, et ribalaiuse ja võrgulatentsuse osas on Calico ja hosti jõudlus sarnane.
|