Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

TL; DR: Všetky CNI fungujú ako majú, s výnimkou Kube-Router a Kube-OVN je Calico s výnimkou automatickej detekcie MTU najlepšie.

Článok – aktualizácia mojich minulých kontrol (2018 и 2019), v čase testovania používam Kubernetes 1.19 na Ubuntu 18.04 s aktualizovanými CNI od augusta 2020.

Predtým, než sa ponoríme do metrík...

Čo je nové od apríla 2019?

  • Môžete testovať na svojom vlastnom klastri: Pomocou nášho nástroja môžete spustiť testy na svojom vlastnom klastri Kubernetes Network Benchmark: knb
  • Objavili sa noví členovia
  • Nové scenáre: Aktuálne kontroly spúšťajú testy výkonu siete „Pod-to-Pod“ a bol pridaný nový skript „Pod-to-Service“, ktorý spúšťa testy bližšie k reálnym podmienkam. V praxi váš Pod s API pracuje so základňou ako so službou, a nie cez IP adresu Podu (samozrejme kontrolujeme TCP aj UDP pre oba scenáre).
  • Spotreba zdrojov: každý test má teraz svoje vlastné porovnanie zdrojov
  • Odstránenie aplikačných testov: Už nerobíme testy HTTP, FTP a SCP, pretože naša plodná spolupráca s komunitou a správcami CNI odhalila medzeru medzi výsledkami iperf oproti TCP a výsledkom curl kvôli oneskoreniu pri spustení CNI (prvých pár sekúnd pod startup, ktorý nie je typický v reálnych podmienkach).
  • Otvorený zdroj: dostupné sú všetky zdroje testov (skripty, nastavenia yml a pôvodné „surové“ údaje). tu

Referenčný testovací protokol

Protokol je podrobne opísaný tuUpozorňujeme, že tento článok je o Ubuntu 18.04 s predvoleným jadrom.

Výber CNI na posúdenie

Toto testovanie je zamerané na porovnanie CNI nakonfigurovaných s jedným súborom yaml (preto sú vylúčené všetky tie, ktoré sú nainštalované pomocou skriptov, ako je VPP a iné).

Naše vybrané CNI na porovnanie:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (sieť Flanel + zásady siete Calico)
  • Cilium 1.8.2
  • Flanel 0.12.0
  • Najnovší smerovač Kube (2020 – 08 – 25)
  • WeaveNet 2.7.0

Konfigurácia MTU pre CNI

Najprv skontrolujeme vplyv automatickej detekcie MTU na výkon TCP:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Vplyv MTU na výkon TCP

Ešte väčšia medzera sa nachádza pri použití UDP:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)
Vplyv MTU na výkon UDP

Vzhľadom na OBROVSKÝ vplyv na výkon odhalený v testoch by sme chceli všetkým správcom CNI poslať list s nádejou: pridajte do CNI automatickú detekciu MTU. Zachránite mačiatka, jednorožce a dokonca aj toho najroztomilejšieho: malého Devopa.

Ak však potrebujete použiť CNI bez podpory automatickej detekcie MTU, môžete ho nakonfigurovať manuálne, aby ste získali výkon. Upozorňujeme, že to platí pre Calico, Canal a WeaveNet.

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)
Moja malá požiadavka na sprievodné CNI...

Testovanie CNI: nespracované údaje

V tejto časti porovnáme CNI so správnym MTU (určeným automaticky alebo nastaveným manuálne). Hlavným cieľom je zobraziť nespracované údaje v grafoch.

Legenda farieb:

  • šedá - vzorka (t.j. holé železo)
  • zelená - šírka pásma nad 9500 Mbps
  • žltá - šírka pásma nad 9000 Mbps
  • oranžová - šírka pásma nad 8000 Mbps
  • červená - šírka pásma pod 8000 Mbps
  • modrá - neutrálna (netýka sa šírky pásma)

Spotreba zdrojov bez zaťaženia

Najprv skontrolujte spotrebu zdrojov, keď klaster „spí“.

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)
Spotreba zdrojov bez zaťaženia

Pod-to-Pod

Tento scenár predpokladá, že podložka klienta sa pripojí priamo k podu servera pomocou svojej adresy IP.

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)
Scenár pod-to-pod

TCP

Výsledky TCP typu Pod-to-Pod a zodpovedajúca spotreba zdrojov:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

UDP

Výsledky UDP typu Pod-to-Pod a zodpovedajúca spotreba zdrojov:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Pod-to-Service

Táto sekcia je relevantná pre reálne prípady použitia, klient Pod sa pripája na server Pod cez službu ClusterIP.

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)
Pod-to-Service Script

TCP

Výsledky protokolu TCP typu Pod-to-Service a zodpovedajúca spotreba zdrojov:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

UDP

Výsledky UDP typu Pod-to-Service a zodpovedajúca spotreba zdrojov:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Podpora sieťovej politiky

Zo všetkých vyššie uvedených jediný, kto nepodporuje politiku, je Flannel. Všetci ostatní správne implementujú sieťové politiky vrátane prichádzajúcich a odchádzajúcich. Dobrá práca!

CNI šifrovanie

Medzi kontrolovanými CNI sú tie, ktoré dokážu šifrovať sieťovú výmenu medzi modulmi:

  • Antrea pomocou IPsec
  • Calico pomocou drôteného chrániča
  • Cilium pomocou IPsec
  • WeaveNet pomocou IPsec

kapacita

Keďže zostáva menej CNI, dajme všetky scenáre do jedného grafu:

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Spotreba zdrojov

V tejto časti zhodnotíme zdroje použité pri spracovaní komunikácie Pod-to-Pod v TCP a UDP. Nemá zmysel kresliť graf Pod-to-Service, pretože neposkytuje ďalšie informácie.

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Dávať to všetko dokopy

Skúsme zopakovať všetky grafy, zaviedli sme tu malú subjektivitu a nahradili skutočné hodnoty slovami „vwry fast“, „low“ atď.

Hodnotenie výkonu CNI pre Kubernetes cez 10G sieť (august 2020)

Záver a moje závery

Je to trochu subjektívne, keďže uvádzam svoju vlastnú interpretáciu výsledkov.

Som rád, že sa objavili nové CNI, Antrea fungovala dobre, mnohé funkcie boli implementované aj v skorých verziách: automatická detekcia MTU, šifrovanie a jednoduchá inštalácia.

Ak porovnáme výkon, všetky CNI fungujú dobre, okrem Kube-OVN a Kube-Router. Kube-Router tiež nedokázal zistiť MTU, nikde v dokumentácii som nenašiel spôsob, ako ho nakonfigurovať (tu žiadosť na túto tému je otvorená).

Čo sa týka spotreby zdrojov, Cilium stále využíva viac pamäte RAM ako ostatné, no výrobca jednoznačne mieri na veľké klastre, čo zjavne nie je to isté ako test na klastri s tromi uzlami. Kube-OVN tiež spotrebuje veľa zdrojov CPU a RAM, ale je to mladé CNI založené na Open vSwitch (ako Antrea funguje lepšie a s menšou spotrebou).

Všetci okrem Flanela majú sieťové pravidlá. Je veľmi pravdepodobné, že ich nikdy nepodporí, keďže cieľ je jednoduchší ako dusená repa: čím ľahšia, tým lepšia.

Okrem iného je úžasný aj výkon šifrovania. Calico je jedným z najstarších CNI, ale šifrovanie bolo pridané len pred pár týždňami. Namiesto IPsec zvolili wireguard a jednoducho povedané, funguje skvele a úžasne, pričom v tejto časti testovania úplne zatieni ostatné CNI. Spotreba zdrojov sa samozrejme vďaka šifrovaniu zvyšuje, no dosiahnutá priepustnosť stojí za to (Calico preukázalo šesťnásobné zlepšenie v teste šifrovania v porovnaní s Ciliom, ktoré je na druhom mieste). Okrem toho môžete po nasadení Calico do klastra kedykoľvek povoliť drôtovú ochranu a môžete ju tiež vypnúť na krátky čas alebo natrvalo, ak chcete. Je to však neuveriteľne pohodlné! Pripomíname vám, že Calico v súčasnosti automaticky nezisťuje MTU (táto funkcia je plánovaná pre budúce verzie), takže nezabudnite nakonfigurovať MTU, ak vaša sieť podporuje Jumbo Frames (MTU 9000).

Okrem iného si všimnite, že Cilium dokáže šifrovať prevádzku medzi uzlami klastra (a nielen medzi modulmi), čo môže byť veľmi dôležité pre verejné uzly klastra.

Na záver navrhujem nasledujúce prípady použitia:

  • Potrebujem CNI pre veľmi malý klaster ALEBO nepotrebujem zabezpečenie: pracovať s flanel, najľahší a najstabilnejší CNI (je tiež jedným z najstarších, podľa legendy ho vynašiel Homo Kubernautus alebo Homo Contaitorus). Možno vás bude zaujímať aj najdômyselnejší projekt k3, skontrolujte!
  • Potrebujete CNI pre bežný klaster: kaliko - vaša voľba, ale v prípade potreby nezabudnite nakonfigurovať MTU. Môžete sa jednoducho a prirodzene hrať so sieťovými politikami, zapínať a vypínať šifrovanie atď.
  • Potrebujete CNI pre (veľmi) rozsiahly klaster: No, test neukazuje správanie veľkých klastrov, rád urobím testy, ale nemáme stovky serverov s 10Gbps pripojením. Najlepšou možnosťou je teda spustiť upravený test na vašich uzloch, aspoň s Calico a Cilium.

Zdroj: hab.com

Pridať komentár