ProHoster > Blog > Uprava > 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
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).
Najprej preverimo vpliv samodejnega zaznavanja MTU na zmogljivost TCP:
Vpliv MTU na zmogljivost TCP
Še večja vrzel je pri uporabi UDP:
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.
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«.
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.
Scenarij od pod do pod
TCP
Rezultati TCP od pod-pod in ustrezna poraba virov:
UDP
Rezultati UDP od pod do pod in ustrezna poraba virov:
Pod do storitve
Ta razdelek je pomemben za dejanske primere uporabe, odjemalski Pod se poveže s strežnikom Pod prek storitve ClusterIP.
Skript od sklopa do storitve
TCP
Rezultati TCP od pod do storitve in ustrezna poraba virov:
UDP
Rezultati UDP od pod do storitve in ustrezna poraba virov:
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:
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.
Vse skupaj
Poskusimo ponoviti vse grafe, tukaj smo uvedli malo subjektivnosti in zamenjali dejanske vrednosti z besedami "vwry hitro", "nizko" itd.
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.