CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

TL; DR: Svi CNI-ovi rade kako treba, sa izuzetkom Kube-Routera i Kube-OVN-a, Calico, sa izuzetkom automatske MTU detekcije, je najbolji.

Ažuriranje članka mojih prošlih provjera (2018 и 2019), u vrijeme testiranja koristim Kubernetes 1.19 na Ubuntu 18.04 sa ažuriranim CNI-ovima od avgusta 2020.

Prije nego zaronimo u metriku...

Šta je novo od aprila 2019.

  • Može testirati na vlastitom klasteru: Možete pokrenuti testove na vlastitom klasteru koristeći naš alat Kubernetes mrežni benchmark: knb
  • Pojavili su se novi članovi
  • Novi scenariji: Trenutne provjere pokreću testove performansi mreže "Pod-to-Pod", a dodana je i nova "Pod-to-Service" skripta koja pokreće testove bliže stvarnim uvjetima. U praksi, vaš Pod sa API-jem radi sa bazom kao servisom, a ne preko Pod ip adrese (naravno da provjeravamo i TCP i UDP za oba scenarija).
  • Potrošnja resursa: svaki test sada ima svoje poređenje resursa
  • Uklanjanje testova aplikacija: Više ne radimo HTTP, FTP i SCP testove jer je naša plodna suradnja sa zajednicom i CNI održavateljima otkrila jaz između iperf rezultata preko TCP-a i curl rezultata zbog kašnjenja u pokretanju CNI-a (prvih nekoliko sekundi Poda startup, što nije tipično u realnim uslovima).
  • Otvoreni kod: svi izvori testa (skripte, yml postavke i originalni „sirovi“ podaci) su dostupni ovdje

Referentni protokol testiranja

Protokol je detaljno opisan ovdjeImajte na umu da je ovaj članak o Ubuntu 18.04 sa zadanim kernelom.

Odabir CNI za procjenu

Ovo testiranje ima za cilj upoređivanje CNI-ova konfigurisanih sa jednom yaml datotekom (dakle, svi oni instalirani pomoću skripti, kao što su VPP i drugi, su isključeni).

Naši odabrani CNI-ovi za poređenje:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flannel network + Calico Network Policies)
  • Cilium 1.8.2
  • Flanel 0.12.0
  • Kube-ruter najnoviji (2020–08–25)
  • WeaveNet 2.7.0

Konfiguriranje MTU-a za CNI

Prije svega, provjeravamo uticaj automatskog otkrivanja MTU-a na performanse TCP-a:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

Uticaj MTU-a na TCP performanse

Još veći jaz se nalazi kada se koristi UDP:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)
Uticaj MTU-a na UDP performanse

S obzirom na OGROMAN uticaj na performanse otkriven u testovima, želimo da pošaljemo pismo nade svim CNI održavaocima: dodajte automatsku MTU detekciju u CNI. Spasit ćete mačiće, jednoroge, pa čak i onog najslađeg: malog Devopa.

Međutim, ako trebate koristiti CNI bez podrške za automatsko otkrivanje MTU-a, možete ga konfigurirati ručno da biste dobili performanse. Imajte na umu da se ovo odnosi na Calico, Canal i WeaveNet.

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)
Moja mala molba pratećim CNI-ovima...

CNI testiranje: neobrađeni podaci

U ovom odeljku ćemo uporediti CNI sa ispravnim MTU-om (određenim automatski ili podešenim ručno). Glavni cilj ovdje je prikazati neobrađene podatke u grafikonima.

Legenda boja:

  • siva - uzorak (tj. golo gvožđe)
  • zeleno - propusni opseg iznad 9500 Mbps
  • žuta - širina pojasa iznad 9000 Mbps
  • narandžasto - propusni opseg iznad 8000 Mbps
  • crveno - propusni opseg ispod 8000 Mbps
  • plava - neutralna (nije vezano za propusni opseg)

Potrošnja resursa bez opterećenja

Prije svega, provjerite potrošnju resursa kada klaster „spava“.

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)
Potrošnja resursa bez opterećenja

Pod-to-Pod

Ovaj scenario pretpostavlja da se klijent Pod povezuje direktno na server Pod koristeći svoju IP adresu.

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)
Pod-to-Pod Scenarij

TCP

Pod-to-Pod TCP rezultati i odgovarajuća potrošnja resursa:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

UDP

Pod-to-Pod UDP rezultati i odgovarajuća potrošnja resursa:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

Pod-to-Service

Ovaj odjeljak je relevantan za slučajeve stvarne upotrebe, klijent Pod se povezuje na server Pod preko ClusterIP usluge.

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)
Pod-to-Service Script

TCP

Pod-to-Service TCP rezultati i odgovarajuća potrošnja resursa:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

UDP

Pod-to-Service UDP rezultati i odgovarajuća potrošnja resursa:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

Podrška mrežnim politikama

Među svim gore navedenim, jedini koji ne podržava politiku je Flannel. Svi ostali ispravno implementiraju mrežne politike, uključujući dolazne i odlazne. Odličan posao!

CNI enkripcija

Među provjerenim CNI-ovima postoje oni koji mogu šifrirati mrežnu razmjenu između Podova:

  • Antrea koristeći IPsec
  • Kaliko koristeći žicu
  • Cilium koristeći IPsec
  • WeaveNet koristeći IPsec

Propusnost

Pošto je ostalo manje CNI-ova, stavimo sve scenarije u jedan grafikon:

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

Potrošnja resursa

U ovom dijelu ćemo procijeniti resurse koji se koriste prilikom obrade Pod-to-Pod komunikacije u TCP i UDP. Nema smisla crtati Pod-to-Service graf jer on ne pruža dodatne informacije.

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

Stavljajući sve zajedno

Pokušajmo ponoviti sve grafikone, ovdje smo uveli malo subjektivnosti, zamijenivši stvarne vrijednosti riječima “vwry fast”, “low” itd.

CNI procjena performansi za Kubernetes preko 10G mreže (avgust 2020.)

Zaključak i moji zaključci

Ovo je malo subjektivno, jer prenosim vlastitu interpretaciju rezultata.

Drago mi je što su se pojavili novi CNI, Antrea je dobro radila, mnoge funkcije su implementirane čak iu ranim verzijama: automatska MTU detekcija, enkripcija i laka instalacija.

Ako uporedimo performanse, svi CNI-ovi rade dobro, osim Kube-OVN-a i Kube-Routera. Kube-Router također nije mogao otkriti MTU, nigdje u dokumentaciji nisam našao način da ga konfigurišem (ovdje otvoren je zahtjev na ovu temu).

Što se tiče potrošnje resursa, Cilium i dalje koristi više RAM-a od ostalih, ali proizvođač jasno cilja na velike klastere, što očito nije isto kao test na klasteru s tri čvora. Kube-OVN takođe troši mnogo CPU i RAM resursa, ali je mladi CNI baziran na Open vSwitch (kao Antrea, radi bolje i troši manje).

Svi osim Flanela imaju mrežne politike. Vrlo je vjerovatno da ih nikada neće podržati, jer je cilj jednostavniji od parene repe: što lakše, to bolje.

Takođe, između ostalog, performanse enkripcije su neverovatne. Calico je jedan od najstarijih CNI-a, ali enkripcija je dodana tek prije nekoliko sedmica. Odabrali su wireguard umjesto IPsec-a, i jednostavno rečeno, radi odlično i zadivljujuće, potpuno zasjenivši druge CNI-je u ovom dijelu testiranja. Naravno, potrošnja resursa se povećava zbog enkripcije, ali postignuta propusnost je vrijedna toga (Calico je pokazao šestostruko poboljšanje u testu enkripcije u odnosu na Cilium, koji je na drugom mjestu). Štaviše, wireguard možete omogućiti u bilo kojem trenutku nakon što postavite Calico na klaster, a možete ga i onemogućiti na kratko ili trajno ako želite. Ipak je neverovatno zgodno! Podsjećamo vas da Calico trenutno ne detektuje automatski MTU (ova funkcija je planirana za buduće verzije), stoga obavezno konfigurišite MTU ako vaša mreža podržava Jumbo Frames (MTU 9000).

Između ostalog, imajte na umu da Cilium može šifrirati promet između čvorova klastera (a ne samo između Podova), što može biti vrlo važno za javne čvorove klastera.

Kao zaključak, predlažem sljedeće slučajeve upotrebe:

  • Trebam CNI za vrlo mali klaster ILI mi ne treba sigurnost: rad sa Flannel, najlakši i najstabilniji CNI (on je i jedan od najstarijih, prema legendi izmislio ga je Homo Kubernautus ili Homo Contaitorus). Možda će vas zanimati i najgenijalniji projekat k3s, provjerite!
  • Potreban CNI za običan klaster: Calico - vaš izbor, ali ne zaboravite da konfigurišete MTU ako je potrebno. Možete se lako i prirodno igrati s mrežnim pravilima, uključiti i isključiti šifriranje itd.
  • Potreban CNI za (veoma) veliki klaster: Pa, test ne pokazuje ponašanje velikih klastera, rado bih obavio testove, ali nemamo stotine servera sa 10Gbps konekcijom. Dakle, najbolja opcija je da pokrenete modifikovani test na vašim čvorovima, barem sa Calico i Ciliumom.

izvor: www.habr.com

Dodajte komentar