Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

TL; DR: Všechny CNI fungují jak mají, s výjimkou Kube-Router a Kube-OVN je Calico s výjimkou automatické detekce MTU nejlepší.

Článek-aktualizace mých minulých kontrol (2018 и 2019), v době testování používám Kubernetes 1.19 na Ubuntu 18.04 s aktualizovanými CNI od srpna 2020.

Než se vrhneme na metriky...

Co je nového od dubna 2019?

  • Lze testovat na vlastním clusteru: Pomocí našeho nástroje můžete spustit testy na vlastním clusteru Síťový benchmark Kubernetes: knb
  • Objevili se noví členové
  • 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:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Vliv MTU na výkon TCP

Ještě větší mezera se nachází při použití UDP:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)
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.

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)
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í“.

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)
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.

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)
Scénář pod-to-pod

TCP

Výsledky TCP Pod-to-Pod a odpovídající spotřeba zdrojů:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

UDP

Výsledky UDP typu Pod-to-Pod a odpovídající spotřeba zdrojů:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

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.

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)
Pod-to-Service skript

TCP

Výsledky TCP protokolu Pod-to-Service a odpovídající spotřeba zdrojů:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

UDP

Výsledky UDP typu Pod-to-Service a odpovídající spotřeba zdrojů:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

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:

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

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.

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

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.

Hodnocení výkonu CNI pro Kubernetes přes 10G síť (srpen 2020)

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.

Zdroj: www.habr.com

Přidat komentář