Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

TL; DR: Të gjitha CNI-të funksionojnë ashtu siç duhet, me përjashtim të Kube-Router dhe Kube-OVN, Calico, me përjashtim të zbulimit automatik MTU, është më i miri.

Përditësimi i artikullit të kontrolleve të mia të kaluara (2018 и 2019), në kohën e testimit po përdor Kubernetes 1.19 në Ubuntu 18.04 me CNI të përditësuara që nga gushti 2020.

Përpara se të zhytemi në metrikë...

Çfarë ka të re që nga prilli 2019?

  • Mund të testoni në grupin tuaj: Ju mund të kryeni teste në grupin tuaj duke përdorur mjetin tonë Standardi i Rrjetit Kubernetes: knb
  • Janë shfaqur anëtarë të rinj
  • Skenarët e rinj: Kontrollet aktuale kryejnë testet e performancës së rrjetit "Pod-to-Pod" dhe është shtuar një skript i ri "Pod-to-Service" që i kryen testet më afër kushteve të botës reale. Në praktikë, Pod juaj me API funksionon me bazën si shërbim, dhe jo përmes adresës ip të Pod (natyrisht që ne kontrollojmë si TCP ashtu edhe UDP për të dy skenarët).
  • Konsumi i burimeve: çdo test tani ka krahasimin e vet të burimeve
  • Heqja e testeve të aplikacionit: Ne nuk bëjmë më teste HTTP, FTP dhe SCP pasi bashkëpunimi ynë i frytshëm me komunitetin dhe mirëmbajtësit e CNI ka zbuluar një hendek midis rezultateve të iperf mbi TCP dhe rezultateve curl për shkak të një vonese në fillimin e CNI (sekondat e para të Pod startup, i cili nuk është tipik në kushte reale).
  • Burimi i hapur: të gjitha burimet e testimit (skriptet, cilësimet yml dhe të dhënat origjinale "të papërpunuara") janë të disponueshme këtu

Protokolli i Referencës së Testit

Protokolli përshkruhet në detaje këtuJu lutemi vini re se ky artikull ka të bëjë me Ubuntu 18.04 me kernelin e paracaktuar.

Zgjedhja e një CNI për vlerësim

Ky testim ka për qëllim krahasimin e CNI-ve të konfiguruara me një skedar yaml (prandaj, të gjitha ato të instaluara nga skriptet, si VPP dhe të tjerët, përjashtohen).

CNI-të tona të zgjedhura për krahasim:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Rrjeti fanellë + Politikat e rrjetit Calico)
  • Ciliumi 1.8.2
  • Fanellë 0.12.0
  • Kube-ruteri më i fundit (2020–08–25)
  • WeaveNet 2.7.0

Konfigurimi i MTU për CNI

Para së gjithash, ne kontrollojmë ndikimin e zbulimit automatik të MTU në performancën e TCP:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Ndikimi i MTU në performancën e TCP

Një hendek edhe më i madh gjendet kur përdorni UDP:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)
Ndikimi i MTU në performancën e PZHU

Duke pasur parasysh ndikimin e madh të performancës të zbuluar në teste, ne dëshirojmë të dërgojmë një letër shprese për të gjithë mirëmbajtësit e CNI: ju lutemi shtoni zbulimin automatik të MTU në CNI. Do të kurseni kotele, njëbrirësh dhe madje edhe më të lezetshmit: Devopin e vogël.

Sidoqoftë, nëse keni nevojë të përdorni CNI pa mbështetje për zbulimin automatik të MTU, mund ta konfiguroni manualisht për të marrë performancën. Ju lutemi vini re se kjo vlen për Calico, Canal dhe WeaveNet.

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)
Kërkesa ime e vogël drejtuar CNI-ve shoqëruese...

Testimi CNI: Të dhëna të papërpunuara

Në këtë seksion, ne do të krahasojmë CNI me MTU-në e saktë (përcaktuar automatikisht ose vendosur manualisht). Qëllimi kryesor këtu është të tregohen të dhënat e papërpunuara në grafikë.

Legjenda e ngjyrave:

  • gri - mostër (d.m.th. hekur i zhveshur)
  • jeshile - gjerësia e brezit mbi 9500 Mbps
  • e verdhë - gjerësia e brezit mbi 9000 Mbps
  • portokalli - gjerësia e brezit mbi 8000 Mbps
  • e kuqe - gjerësia e brezit nën 8000 Mbps
  • blu - neutrale (nuk lidhet me gjerësinë e brezit)

Konsumi i burimeve pa ngarkesë

Para së gjithash, kontrolloni konsumin e burimeve kur grupi është "duke fjetur".

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)
Konsumi i burimeve pa ngarkesë

Pod-to-Pod

Ky skenar supozon që klienti Pod lidhet drejtpërdrejt me serverin Pod duke përdorur adresën e tij IP.

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)
Skenari Pod-to-Pod

TCP

Rezultatet TCP Pod-to-Pod dhe konsumi përkatës i burimeve:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

UDP

Rezultatet Pod-to-Pod UDP dhe konsumi përkatës i burimeve:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Pod-to-Service

Ky seksion është i rëndësishëm për rastet e përdorimit real, klienti Pod lidhet me serverin Pod nëpërmjet shërbimit ClusterIP.

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)
Skript "Pod-to-Service".

TCP

Rezultatet TCP të Pod-to-Service dhe konsumi përkatës i burimeve:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

UDP

Rezultatet e UDP-së nga Pod-to-Service dhe konsumi përkatës i burimeve:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Mbështetja e politikave të rrjetit

Ndër të gjitha sa më sipër, i vetmi që nuk e mbështet politikën është Flannel. Të gjithë të tjerët zbatojnë saktë politikat e rrjetit, duke përfshirë hyrjen dhe daljen. Punë e mrekullueshme!

Kriptimi CNI

Ndër CNI-të e kontrolluara ka nga ato që mund të kodojnë shkëmbimin e rrjetit midis Pods:

  • Antrea duke përdorur IPsec
  • Calico duke përdorur tela
  • Ciliium duke përdorur IPsec
  • WeaveNet duke përdorur IPsec

kapacitet

Meqenëse kanë mbetur më pak CNI, le t'i vendosim të gjithë skenarët në një grafik:

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Konsumi i burimeve

Në këtë seksion, ne do të vlerësojmë burimet e përdorura gjatë përpunimit të komunikimit Pod-to-Pod në TCP dhe UDP. Nuk ka kuptim të vizatoni një grafik Pod-to-Service pasi ai nuk ofron informacion shtesë.

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Duke i bashkuar të gjitha

Le të përpiqemi të përsërisim të gjithë grafikët, ne futëm pak subjektivitet këtu, duke zëvendësuar vlerat aktuale me fjalët "vwry fast", "i ulët", etj.

Vlerësimi i performancës së CNI për rrjetin Kubernetes mbi 10G (gusht 2020)

Përfundimi dhe përfundimet e mia

Kjo është paksa subjektive, pasi unë po përcjell interpretimin tim të rezultateve.

Më vjen mirë që u shfaqën CNI të reja, Antrea performoi mirë, shumë funksione u zbatuan edhe në versionet e hershme: zbulimi automatik i MTU, kriptimi dhe instalimi i lehtë.

Nëse krahasojmë performancën, të gjitha CNI-të funksionojnë mirë, përveç Kube-OVN dhe Kube-Router. Kube-Router gjithashtu nuk ishte në gjendje të zbulonte MTU, nuk gjeta një mënyrë për ta konfiguruar atë askund në dokumentacion (këtu një kërkesë për këtë temë është e hapur).

Për sa i përket konsumit të burimeve, Cilium përdor akoma më shumë RAM se të tjerët, por prodhuesi po synon qartë grupime të mëdha, gjë që nuk është qartë e njëjtë me një provë në një grup me tre nyje. Kube-OVN gjithashtu konsumon shumë burime CPU dhe RAM, por është një CNI i ri i bazuar në Open vSwitch (si Antrea, performon më mirë dhe konsumon më pak).

Të gjithë përveç Flannel kanë politika rrjeti. Ka shumë të ngjarë që ai të mos i mbështesë kurrë, pasi qëllimi është më i thjeshtë se një rrepë e zier me avull: sa më e lehtë, aq më mirë.

Gjithashtu, ndër të tjera, performanca e kriptimit është e mahnitshme. Calico është një nga CNI-të më të vjetra, por enkriptimi u shtua vetëm disa javë më parë. Ata zgjodhën wireguard në vend të IPsec, dhe e thënë thjesht, funksionon shkëlqyeshëm dhe mahnitës, duke eklipsuar plotësisht CNI-të e tjera në këtë pjesë të testimit. Sigurisht, konsumi i burimeve rritet për shkak të kriptimit, por xhiroja e arritur ia vlen (Calico tregoi një përmirësim gjashtëfish në testin e kriptimit në krahasim me Cilium, i cili renditet i dyti). Për më tepër, mund të aktivizoni "wireguard" në çdo kohë pasi të keni vendosur Calico në grup, dhe gjithashtu mund ta çaktivizoni atë për një kohë të shkurtër ose përgjithmonë nëse dëshironi. Megjithatë, është tepër i përshtatshëm! Ju kujtojmë se Calico aktualisht nuk e zbulon automatikisht MTU (kjo veçori është planifikuar për versionet e ardhshme), prandaj sigurohuni që të konfiguroni MTU nëse rrjeti juaj mbështet Jumbo Frames (MTU 9000).

Ndër të tjera, vini re se Cilium mund të enkriptojë trafikun midis nyjeve të grupimit (dhe jo vetëm midis Pods), gjë që mund të jetë shumë e rëndësishme për nyjet e grupimeve publike.

Si përfundim, unë sugjeroj rastet e mëposhtme të përdorimit:

  • Më duhet CNI për një grup shumë të vogël OSE nuk kam nevojë për siguri: punojnë me fanellë, CNI më e lehtë dhe më e qëndrueshme (ai është gjithashtu një nga më të vjetrit, sipas legjendës ai u shpik nga Homo Kubernautus ose Homo Contaitorus). Ju gjithashtu mund të jeni të interesuar për projektin më gjenial k3s, kontrollo!
  • Duhet CNI për një grup të rregullt: prej basme - zgjedhja juaj, por mos harroni të konfiguroni MTU nëse është e nevojshme. Mund të luani lehtësisht dhe natyrshëm me politikat e rrjetit, të aktivizoni dhe çaktivizoni enkriptimin, etj.
  • Nevojë për CNI për grupim në shkallë (shumë) të gjerë: Epo, testi nuk tregon sjelljen e grupimeve të mëdha, do të isha i lumtur të kryeja teste, por ne nuk kemi qindra serverë me një lidhje 10 Gbps. Pra, opsioni më i mirë është të ekzekutoni një test të modifikuar në nyjet tuaja, të paktën me Calico dhe Cilium.

Burimi: www.habr.com

Shto një koment