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

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

TL; DR: Svi CNI rade kako bi trebali, s izuzetkom Kube-Routera i Kube-OVN-a, Calico je, s izuzetkom automatske MTU detekcije, najbolji.

Članak-ažuriranje mojih prošlih provjera (2018 и 2019), u vrijeme testiranja koristim Kubernetes 1.19 na Ubuntu 18.04 s ažuriranim CNI-jevima od kolovoza 2020.

Prije nego što zaronimo u metriku...

Što je novo od travnja 2019.?

  • Može testirati na vlastitom klasteru: Možete pokrenuti testove na vlastitom klasteru pomoću našeg alata Kubernetes Network Benchmark: knb
  • Pojavili su se novi članovi
  • Novi scenariji: Trenutne provjere pokreću testove performansi mreže "Pod-to-Pod", a dodana je nova skripta "Pod-to-Service" koja pokreće testove bliže stvarnim uvjetima. U praksi, vaš Pod s API-jem radi s bazom kao servis, a ne preko Pod ip adrese (naravno provjeravamo i TCP i UDP za oba scenarija).
  • Potrošnja resursa: svaki test sada ima vlastitu usporedbu resursa
  • Uklanjanje testova aplikacija: više ne radimo HTTP, FTP i SCP testove jer je naša plodna suradnja sa zajednicom i održavateljima CNI-ja otkrila jaz između iperf rezultata preko TCP-a i curl rezultata zbog kašnjenja u pokretanju CNI-ja (prvih nekoliko sekundi Poda pokretanje, što nije tipično u stvarnim uvjetima).
  • Otvoreni izvor: dostupni su svi testni izvori (skripte, yml postavke i originalni "neobrađeni" podaci). здесь

Referentni testni protokol

Protokol je detaljno opisan здесьImajte na umu da se ovaj članak odnosi na Ubuntu 18.04 sa zadanom jezgrom.

Odabir CNI za procjenu

Ovo testiranje ima za cilj usporedbu CNI-ova konfiguriranih s jednom yaml datotekom (dakle, svi oni instalirani skriptama, poput VPP-a i drugih, su isključeni).

Naši odabrani CNI-ovi za usporedbu:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (mreža Flannel + mrežna pravila Calico)
  • Trepetljika 1.8.2
  • Flanel 0.12.0
  • Najnoviji Kube-router (2020–08–25)
  • WeaveNet 2.7.0

Konfiguriranje MTU za CNI

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

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

Utjecaj MTU-a na TCP izvedbu

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

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

S obzirom na OGROMAN utjecaj na performanse otkriven u testovima, željeli bismo poslati pismo nade svim održavateljima CNI-ja: dodajte automatsko otkrivanje MTU-ja 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 (kolovoz 2020.)
Moj mali zahtjev za prateće CNI-je...

CNI testiranje: neobrađeni podaci

U ovom odjeljku usporedit ćemo CNI s ispravnim MTU (određenim automatski ili postavljenim ručno). Glavni cilj ovdje je prikazati neobrađene podatke u grafikonima.

Legenda boja:

  • siva - uzorak (tj. golo željezo)
  • zeleno - propusnost iznad 9500 Mbps
  • žuto - propusnost iznad 9000 Mbps
  • narančasta - propusnost iznad 8000 Mbps
  • crveno - propusnost ispod 8000 Mbps
  • plavo - neutralno (nevezano za propusnost)

Potrošnja resursa bez opterećenja

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

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

Pod-pod-pod

Ovaj scenarij pretpostavlja da se klijent Pod povezuje izravno s poslužiteljem Pod koristeći svoju IP adresu.

CNI procjena performansi za Kubernetes preko 10G mreže (kolovoz 2020.)
Scenarij od pod do pod

TCP

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

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

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

UDP

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

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

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

Pod-to-Service

Ovaj odjeljak je relevantan za stvarne slučajeve upotrebe, klijent Pod povezuje se s poslužiteljem Pod putem usluge ClusterIP.

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

TCP

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

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

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

UDP

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

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

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

Podrška za mrežnu politiku

Od svih navedenih jedino Flanel ne podržava politiku. Svi ostali ispravno provode mrežna pravila, uključujući ulazne i izlazne. Odličan posao!

CNI šifriranje

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

  • Antrea koristeći IPsec
  • Calico s žicom
  • Cilium koristeći IPsec
  • WeaveNet koristeći IPsec

kapacitet

Budući da je ostalo manje CNI-ova, stavimo sve scenarije u jedan grafikon:

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

Potrošnja resursa

U ovom odjeljku procijenit ćemo resurse koji se koriste pri obradi Pod-to-Pod komunikacije u TCP-u i UDP-u. Nema smisla crtati grafikon Pod-to-Service jer on ne pruža dodatne informacije.

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

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

Sve skupa

Pokušajmo ponoviti sve grafikone, ovdje smo uveli malo subjektivnosti, zamjenjujući stvarne vrijednosti riječima "vrlo brzo", "nisko" itd.

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

Zaključak i moji zaključci

Ovo je malo subjektivno, jer prenosim vlastitu interpretaciju rezultata.

Drago mi je da su se pojavili novi CNI-ovi, Antrea se dobro pokazala, mnoge su funkcije implementirane čak iu prvim verzijama: automatsko otkrivanje MTU-a, enkripcija i jednostavna instalacija.

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

Š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 od tri čvora. Kube-OVN također troši puno CPU i RAM resursa, ali to je mladi CNI temeljen na Open vSwitchu (kao i Antrea, radi bolje i troši manje).

Svi osim Flanela imaju mrežna pravila. Vrlo je vjerojatno da ih nikada neće podržati, jer cilj je jednostavniji od kuhane repe: što lakša, to bolja.

Također, između ostalog, performanse enkripcije su nevjerojatne. Calico je jedan od najstarijih CNI-ova, ali je enkripcija dodana tek prije nekoliko tjedana. Izabrali su wireguard umjesto IPsec-a, i jednostavno rečeno, radi odlično i nevjerojatno, potpuno zasjenjujući druge CNI-ove u ovom dijelu testiranja. Naravno, potrošnja resursa se povećava zbog enkripcije, ali postignuti protok se isplati (Calico je pokazao šesterostruko poboljšanje u testu enkripcije u usporedbi s Ciliumom, koji je na drugom mjestu). Štoviše, možete omogućiti wireguard bilo kada nakon što implementirate Calico u klaster, a možete ga i onemogućiti na kratko vrijeme ili trajno ako želite. Ipak je nevjerojatno zgodan! Podsjećamo vas da Calico trenutačno ne otkriva automatski MTU (ova je značajka planirana za buduće verzije), stoga svakako konfigurirajte MTU ako vaša mreža podržava Jumbo okvire (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: Raditi sa Flanel, najlakši i najstabilniji CNI (također je jedan od najstarijih, prema legendi izumio ga je Homo Kubernautus ili Homo Contaitorus). Možda će vas zanimati i najgenijalniji projekt k3, ček!
  • Potreban je CNI za obični klaster: platno - vaš izbor, ali ne zaboravite konfigurirati MTU ako je potrebno. Možete se jednostavno i prirodno igrati s mrežnim pravilima, uključiti i isključiti enkripciju itd.
  • Potreban je CNI za (vrlo) veliki klaster: Pa, test ne pokazuje ponašanje velikih klastera, bilo bi mi drago provesti testove, ali nemamo stotine poslužitelja s vezom od 10 Gbps. Stoga je najbolja opcija pokrenuti modificirani test na svojim čvorovima, barem s Calico i Ciliumom.

Izvor: www.habr.com

Dodajte komentar