Nové scénáře: Současné kontroly provádějí testy výkonu sítě „Pod-to-Pod“ a byl přidán nový skript „Pod-to-Service“, který spouští testy blíže reálným podmínkám. V praxi váš Pod s API pracuje se základnou jako se službou, a ne přes ip adresu Pod (samozřejmě pro oba scénáře kontrolujeme TCP i UDP).
Spotřeba zdrojů: každý test má nyní své vlastní srovnání zdrojů
Odstranění aplikačních testů: Již neprovádíme testy HTTP, FTP a SCP, protože naše plodná spolupráce s komunitou a správci CNI odhalila mezeru mezi výsledky iperf oproti TCP a výsledky curl kvůli zpoždění při spuštění CNI (prvních několik sekund Pod spuštění, které není v reálných podmínkách typické).
Open source: všechny testovací zdroje (skripty, nastavení yml a původní „raw“ data) jsou k dispozici zde
Referenční testovací protokol
Protokol je podrobně popsán zdeUpozorňujeme, že tento článek je o Ubuntu 18.04 s výchozím jádrem.
Výběr CNI pro posouzení
Toto testování je zaměřeno na porovnání CNI konfigurovaných s jedním yaml souborem (proto jsou vyloučeny všechny ty nainstalované pomocí skriptů, jako je VPP a další).
Naše vybrané CNI pro srovnání:
Antrea v.0.9.1
Calico v3.16
Canal v3.16 (síť Flanel + zásady sítě Calico)
Cilium 1.8.2
Flanel 0.12.0
Nejnovější Kube-router (2020–08–25)
WeaveNet 2.7.0
Konfigurace MTU pro CNI
Nejprve zkontrolujeme dopad automatické detekce MTU na výkon TCP:
Vliv MTU na výkon TCP
Ještě větší mezera se nachází při použití UDP:
Vliv MTU na výkon UDP
Vzhledem k OBROVSKÉMU dopadu na výkon odhalenému v testech bychom rádi poslali dopis s nadějí všem správcům CNI: přidejte do CNI automatickou detekci MTU. Zachráníte koťátka, jednorožce a dokonce i toho nejroztomilejšího: malého Devopa.
Pokud však potřebujete používat CNI bez podpory automatické detekce MTU, můžete jej nakonfigurovat ručně, abyste získali výkon. Upozorňujeme, že to platí pro Calico, Canal a WeaveNet.
Můj malý požadavek na doprovodné CNI...
Testování CNI: Nezpracovaná data
V této části porovnáme CNI se správnou MTU (určenou automaticky nebo nastavenou ručně). Hlavním cílem je zde zobrazit nezpracovaná data v grafech.
Legenda barev:
šedá - vzorek (tj. holé železo)
zelená - šířka pásma nad 9500 Mbps
žlutá - šířka pásma nad 9000 Mbps
oranžová - šířka pásma nad 8000 Mbps
červená - šířka pásma pod 8000 Mbps
modrá - neutrální (nesouvisí s šířkou pásma)
Spotřeba zdrojů bez zatížení
Nejprve zkontrolujte spotřebu zdrojů, když cluster „spí“.
Spotřeba zdrojů bez zatížení
Pod-to-Pod
Tento scénář předpokládá, že se klientský modul připojí přímo k serverovému modulu pomocí své IP adresy.
Scénář pod-to-pod
TCP
Výsledky TCP Pod-to-Pod a odpovídající spotřeba zdrojů:
UDP
Výsledky UDP typu Pod-to-Pod a odpovídající spotřeba zdrojů:
Pod-to-Service
Tato sekce je relevantní pro skutečné případy použití, klientský Pod se připojuje k serverovému Podu prostřednictvím služby ClusterIP.
Pod-to-Service skript
TCP
Výsledky TCP protokolu Pod-to-Service a odpovídající spotřeba zdrojů:
UDP
Výsledky UDP typu Pod-to-Service a odpovídající spotřeba zdrojů:
Podpora síťové politiky
Ze všech výše jmenovaných jediný, kdo nepodporuje politiku, je Flannel. Všichni ostatní správně implementují síťové zásady, včetně příchozích a odchozích. Dobrá práce!
CNI šifrování
Mezi kontrolovanými CNI jsou ty, které mohou šifrovat síťovou výměnu mezi moduly:
Antrea pomocí IPsec
Calico pomocí drátěného chrániče
Cilium pomocí IPsec
WeaveNet pomocí IPsec
Propustnost
Protože CNI zbývá méně, dejte všechny scénáře do jednoho grafu:
Spotřeba zdrojů
V této části zhodnotíme zdroje použité při zpracování komunikace Pod-to-Pod v TCP a UDP. Nemá smysl kreslit graf Pod-to-Service, protože neposkytuje další informace.
Dát to všechno dohromady
Zkusme si zopakovat všechny grafy, zavedli jsme zde trochu subjektivity a skutečné hodnoty nahradili slovy „vwry fast“, „low“ atd.
Závěr a moje závěry
To je trochu subjektivní, protože předávám vlastní interpretaci výsledků.
Jsem rád, že se objevily nové CNI, Antrea si vedla dobře, mnoho funkcí bylo implementováno i v raných verzích: automatická detekce MTU, šifrování a snadná instalace.
Pokud porovnáme výkon, všechny CNI fungují dobře, kromě Kube-OVN a Kube-Router. Kube-Router také nebyl schopen detekovat MTU, nikde v dokumentaci jsem nenašel způsob, jak jej nakonfigurovat (zde žádost na toto téma je otevřená).
Co se týče spotřeby zdrojů, Cilium stále využívá více RAM než ostatní, ale výrobce jasně cílí na velké clustery, což zjevně není totéž jako test na clusteru se třemi uzly. Kube-OVN také spotřebovává spoustu zdrojů CPU a RAM, ale je to mladé CNI založené na Open vSwitch (jako Antrea funguje lépe a s menší spotřebou).
Všichni kromě Flanela mají síťové zásady. Je velmi pravděpodobné, že je nikdy nepodpoří, protože cíl je jednodušší než dušený tuřín: čím lehčí, tím lepší.
Mimo jiné je úžasný i výkon šifrování. Calico je jedním z nejstarších CNI, ale šifrování bylo přidáno teprve před několika týdny. Místo IPsec zvolili wireguard a jednoduše řečeno funguje skvěle a úžasně a zcela zastiňuje ostatní CNI v této části testování. Spotřeba zdrojů se samozřejmě díky šifrování zvyšuje, ale dosažená propustnost stojí za to (Calico prokázalo šestinásobné zlepšení v testu šifrování oproti Ciliu, které je na druhém místě). Kromě toho můžete povolit drátovou ochranu kdykoli po nasazení Calico do clusteru a můžete ji také na krátkou dobu nebo trvale zakázat, pokud chcete. Je to ale neuvěřitelně pohodlné! Připomínáme, že Calico v současnosti automaticky nezjišťuje MTU (tato funkce je plánována pro budoucí verze), takže pokud vaše síť podporuje Jumbo Frames (MTU 9000), nezapomeňte nakonfigurovat MTU.
Mimo jiné si všimněte, že Cilium dokáže šifrovat provoz mezi uzly clusteru (a nejen mezi moduly), což může být pro veřejné uzly clusteru velmi důležité.
Na závěr navrhuji následující případy použití:
Potřebuji CNI pro velmi malý cluster NEBO nepotřebuji zabezpečení: pracovat s Flanel, nejlehčí a nejstabilnější CNI (je také jedním z nejstarších, podle legendy jej vynalezl Homo Kubernautus nebo Homo Contaitorus). Možná vás bude zajímat i nejdůmyslnější projekt k3s, šek!
Potřebujete CNI pro běžný cluster: Kaliko - vaše volba, ale v případě potřeby nezapomeňte nakonfigurovat MTU. Můžete si snadno a přirozeně hrát se síťovými zásadami, zapínat a vypínat šifrování atd.
Potřebujete CNI pro (velmi) rozsáhlý cluster: No, test neukazuje chování velkých clusterů, testy bych rád provedl, ale nemáme stovky serverů s 10Gbps připojením. Nejlepší možností je tedy spustit upravený test na vašich uzlech, alespoň pomocí Calico a Cilium.