Nedávno som pracoval na PaaS obsahu a práve som sa dostal do kontaktu s Kubernetes, ktorý zahŕňa pokrytie siete, teda komunikáciu medzi cross-host kontajnermi. Tak vznikla séria open source komponentov, ako flanel, kaliko, tkanie a podobne. Tu sú hlavne Calico a Fannel.
Flanelový princíp
Flannel, projekt vyvinutý spoločnosťou CoreOS, je pravdepodobne najpriamejší a najpopulárnejší plugin CNI. Je to jeden z najvyspelejších príkladov sieťovej architektúry v systémoch orchestrácie kontajnerov a je navrhnutý tak, aby umožnil lepšie medzikontajnerové a medzihostiteľské siete. S nástupom konceptu CNI je plugin Flannel CNI jedným z prvých predstaviteľov.
Flanel sa relatívne ľahko inštaluje a konfiguruje v porovnaní s inými možnosťami. Je zabalený ako jeden binárny FlannelD a mnohé bežné nástroje na nasadzovanie Kubernetes clusterov a mnohé Kubernetes distribúcie dokážu Flannel nainštalovať automaticky. Flannel môže použiť existujúci etcd klaster Kubernetes na ukladanie svojich stavových informácií pomocou API, takže nevyžaduje samostatné dátové úložisko.
Flannel konfiguruje prekryvnú sieť Layer 3 IPv4. Vytvára veľkú internú sieť, ktorá pokrýva každý uzol v klastri. V tejto prekryvnej sieti má každý uzol podsieť, ktorá sa používa na interné priraďovanie IP adries. Pri konfigurácii podu priradí Docker bridge rozhranie na každom uzle adresu ku každému novému kontajneru. Pody na tom istom hostiteľovi môžu komunikovať pomocou Docker mostov, zatiaľ čo pody na rôznych hostiteľoch používajú flanneld na zapuzdrenie svojej prevádzky v UDP paketoch, aby mohli byť smerované na príslušné miesto.
Flannel má niekoľko rôznych typov backendov, ktoré možno použiť na zapuzdrenie a smerovanie. Predvolený a odporúčaný prístup je používať VXLAN, pretože VXLAN funguje lepšie a vyžaduje menej manuálneho zásahu.
Kaliko architektúra
Kaliko obsahuje nasledujúce dôležité komponenty: Felix, etcd, BGP klient a BGP Route Reflector. Nasledujú vysvetlenia každej z týchto zložiek.
Felix: Hlavne zodpovedný za konfiguráciu smerovania, konfiguráciu a doručenie pravidiel ACLS, existuje na každom uzle.
etcd: Distribuované úložisko kľúč-hodnota, ktoré je hlavne zodpovedné za konzistenciu metadát siete a zabezpečuje presnosť stavu siete Calico, môže byť zdieľané s kubernetes;
BGPClient (BIRD) je hlavne zodpovedný za distribúciu smerovacích informácií napísaných Felixom do jadra do aktuálnej siete Calico, aby sa zabezpečila efektívnosť komunikácie medzi pracovnými záťažami.
BGPRoute Reflector (BIRD) sa používa vo veľkých nasadeniach, pričom sa opúšťa mesh režim prepojenia všetkých uzlov a používa sa jeden alebo viac BGPRoute reflektorov na dokončenie centralizovaného smerovania a distribúcie.
Princíp kalika
Ako je znázornené na nasledujúcom diagrame, proces je znázornený od zdrojového kontajnera cez zdrojový hostiteľ, cez smerovanie dátového centra, nakoniec k cieľovému hostiteľovi a nakoniec priradený k cieľovému kontajneru.
Kontrast
Z vyššie uvedeného princípu vyplýva, že flannel vykonáva operácie rozbalovania paketov na základe smerovania smerovania, čo plytvá výpočtovými zdrojmi CPU. Nižšie uvedený graf porovnáva výkonnosť rôznych open source sieťových komponentov dostupných online. Je zrejmé, že z hľadiska šírky pásma a latencie siete je výkon Calico a hostiteľa podobný.
|