Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

TL; DR: Vsi CNI delajo kot morajo, z izjemo Kube-Router in Kube-OVN je Calico, z izjemo samodejnega zaznavanja MTU, najboljši.

Članek-posodobitev mojih preteklih preverjanj (2018 и 2019), v času testiranja uporabljam Kubernetes 1.19 na Ubuntu 18.04 s posodobljenimi CNI od avgusta 2020.

Preden se poglobimo v meritve ...

Kaj je novega od aprila 2019?

  • Lahko testirate na lastni gruči: z našim orodjem lahko izvajate teste na lastni gruči Kubernetes Network Benchmark: knb
  • Pojavili so se novi člani
  • Novi scenariji: Trenutna preverjanja izvajajo teste zmogljivosti omrežja "Pod-to-Pod", dodan je bil nov skript "Pod-to-Service", ki izvaja teste bližje pogojem v resničnem svetu. V praksi vaš Pod z API-jem deluje z bazo kot storitev in ne preko ip naslova Pod (seveda preverjamo tako TCP kot UDP za oba scenarija).
  • Poraba virov: vsak test ima zdaj lastno primerjavo virov
  • Odstranjevanje preizkusov aplikacij: Ne izvajamo več testov HTTP, FTP in SCP, saj je naše plodno sodelovanje s skupnostjo in vzdrževalci CNI odkrilo vrzel med rezultati iperf prek TCP in rezultati curl zaradi zakasnitve pri zagonu CNI (prvih nekaj sekund Pod zagon, kar v dejanskih razmerah ni tipično).
  • Odprta koda: na voljo so vsi testni viri (skripte, nastavitve yml in izvirni »surovi« podatki). tukaj

Referenčni testni protokol

Protokol je podrobno opisan tukajUpoštevajte, da ta članek govori o Ubuntu 18.04 s privzetim jedrom.

Izbira CNI za ocenjevanje

Namen tega testiranja je primerjati CNI-je, konfigurirane z eno datoteko yaml (zato so vsi tisti, ki so nameščeni s skripti, kot so VPP in drugi, izključeni).

Naši izbrani CNI za primerjavo:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (mreža Flannel + pravilniki omrežja Calico)
  • Cilij 1.8.2
  • Flanela 0.12.0
  • Kube-router najnovejši (2020–08–25)
  • WeaveNet 2.7.0

Konfiguriranje MTU za CNI

Najprej preverimo vpliv samodejnega zaznavanja MTU na zmogljivost TCP:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Vpliv MTU na zmogljivost TCP

Še večja vrzel je pri uporabi UDP:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)
Vpliv MTU na zmogljivost UDP

Glede na VELIKI vpliv na zmogljivost, ki so ga pokazali testi, bi radi poslali pismo upanja vsem vzdrževalcem CNI: dodajte samodejno zaznavanje MTU v CNI. Rešili boste mačje mladiče, samoroge in celo najbolj srčkanega: malega Devopa.

Če pa morate CNI uporabljati brez podpore za samodejno zaznavanje MTU, ga lahko konfigurirate ročno, da zagotovite zmogljivost. Upoštevajte, da to velja za Calico, Canal in WeaveNet.

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)
Moja majhna prošnja za priložene CNI...

Testiranje CNI: neobdelani podatki

V tem razdelku bomo primerjali CNI s pravilnim MTU (določenim samodejno ali nastavljenim ročno). Glavni cilj tukaj je prikazati neobdelane podatke v grafih.

Barvna legenda:

  • siva - vzorec (tj. golo železo)
  • zelena - pasovna širina nad 9500 Mbps
  • rumena - pasovna širina nad 9000 Mbps
  • oranžna - pasovna širina nad 8000 Mbps
  • rdeča - pasovna širina pod 8000 Mbps
  • modra - nevtralna (ni povezana s pasovno širino)

Poraba virov brez obremenitve

Najprej preverite porabo virov, ko gruča »spi«.

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)
Poraba virov brez obremenitve

Pod-pod

Ta scenarij predvideva, da se odjemalski Pod poveže neposredno s strežnikom Pod z uporabo svojega naslova IP.

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)
Scenarij od pod do pod

TCP

Rezultati TCP od pod-pod in ustrezna poraba virov:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

UDP

Rezultati UDP od pod do pod in ustrezna poraba virov:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Pod do storitve

Ta razdelek je pomemben za dejanske primere uporabe, odjemalski Pod se poveže s strežnikom Pod prek storitve ClusterIP.

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)
Skript od sklopa do storitve

TCP

Rezultati TCP od pod do storitve in ustrezna poraba virov:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

UDP

Rezultati UDP od pod do storitve in ustrezna poraba virov:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Podpora omrežni politiki

Med vsemi naštetimi je edina, ki ne podpira politike, Flanela. Vsi ostali pravilno izvajajo omrežne politike, vključno z vhodnimi in odhodnimi. Odlično opravljeno!

CNI šifriranje

Med preverjenimi CNI-ji so tisti, ki lahko šifrirajo omrežno izmenjavo med Podi:

  • Antrea z uporabo IPsec
  • Calico z žično zaščito
  • Cilium z uporabo IPsec
  • WeaveNet z uporabo IPsec

Prepustnost

Ker je ostalo manj CNI-jev, združimo vse scenarije v en graf:

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Poraba virov

V tem razdelku bomo ocenili vire, uporabljene pri obdelavi komunikacije Pod-pod v TCP in UDP. Nima smisla risati grafa Pod-storitev, saj ne nudi dodatnih informacij.

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Vse skupaj

Poskusimo ponoviti vse grafe, tukaj smo uvedli malo subjektivnosti in zamenjali dejanske vrednosti z besedami "vwry hitro", "nizko" itd.

Ocena zmogljivosti CNI za Kubernetes prek omrežja 10G (avgust 2020)

Zaključek in moji sklepi

To je malo subjektivno, saj posredujem svojo interpretacijo rezultatov.

Veseli me, da so se pojavili novi CNI-ji, Antrea se je dobro obnesla, številne funkcije so bile implementirane že v zgodnjih različicah: samodejno zaznavanje MTU, šifriranje in enostavna namestitev.

Če primerjamo zmogljivost, vsi CNI delujejo dobro, razen Kube-OVN in Kube-Router. Kube-Router tudi ni mogel zaznati MTU, nikjer v dokumentaciji nisem našel načina za njegovo konfiguracijo (tukaj povpraševanje na to temo je odprto).

Kar zadeva porabo virov, Cilium še vedno uporablja več RAM-a kot drugi, vendar proizvajalec očitno cilja na velike gruče, kar očitno ni enako kot test na gruči s tremi vozlišči. Tudi Kube-OVN porabi veliko virov CPE in RAM, vendar je mlad CNI, ki temelji na Open vSwitch (tako kot Antrea deluje bolje in porabi manj).

Vsi razen Flannel imajo omrežne pravilnike. Zelo verjetno je, da jih nikoli ne bo podprl, saj je cilj enostavnejši od kuhane repe: lažji je, boljši je.

Med drugim je tudi zmogljivost šifriranja neverjetna. Calico je eden najstarejših CNI, vendar je bilo šifriranje dodano šele pred nekaj tedni. Izbrali so wireguard namesto IPsec in preprosto povedano, deluje odlično in neverjetno ter popolnoma zasenči druge CNI v tem delu testiranja. Seveda se zaradi šifriranja poveča poraba virov, vendar se dosežena prepustnost splača (Calico je v testu šifriranja pokazal šestkratno izboljšanje v primerjavi s Ciliumom, ki je na drugem mestu). Poleg tega lahko wireguard omogočite kadar koli po tem, ko Calico namestite v gručo, in ga lahko tudi onemogočite za kratek čas ali trajno, če želite. Je pa neverjetno priročno! Spomnimo vas, da Calico trenutno ne zazna samodejno MTU (ta funkcija je načrtovana za prihodnje različice), zato ne pozabite konfigurirati MTU, če vaše omrežje podpira Jumbo Frames (MTU 9000).

Med drugim upoštevajte, da lahko Cilium šifrira promet med vozlišči gruče (in ne samo med Podi), kar je lahko zelo pomembno za javna vozlišča gruče.

Za zaključek predlagam naslednje primere uporabe:

  • Potrebujem CNI za zelo majhno gručo ALI ne potrebujem varnosti: delo z Flannel, najlažji in najstabilnejši CNI (je tudi eden najstarejših, po legendi naj bi ga izumil Homo Kubernautus ali Homo Contaitorus). Morda vas bo zanimal tudi najbolj genialen projekt k3, preveri!
  • Potrebujete CNI za običajno gručo: Calico - vaša izbira, vendar ne pozabite konfigurirati MTU, če je potrebno. Preprosto in naravno se lahko igrate z omrežnimi pravilniki, vklopite in izklopite šifriranje itd.
  • Potrebujete CNI za (zelo) velike gruče: No, test ne kaže obnašanja velikih grozdov, z veseljem bi izvedel teste, vendar nimamo na stotine strežnikov s povezavo 10 Gbps. Zato je najboljša možnost zagnati spremenjeni test na svojih vozliščih, vsaj s Calico in Ciliumom.

Vir: www.habr.com

Dodaj komentar