Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Dan huwa l-aġġornament tiegħi benchmark preċedenti, li issa taħdem fuq Kubernetes 1.14 bl-aħħar verżjoni tas-CNI minn April 2019.

L-ewwelnett, irrid nirringrazzja lit-tim ta 'Cilium: il-guys għenuni jiċċekkja u jikkoreġi l-iskripts tal-monitoraġġ tal-metriċi.

Dak li nbidel minn Novembru 2018

Hawn dak li nbidel minn dakinhar (jekk int interessat):

Flanella tibqa 'l-interface CNI l-aktar mgħaġġla u sempliċi, iżda xorta ma tappoġġjax il-politiki tan-netwerk u l-encryption.

Romana m'għadhiex appoġġjata, għalhekk neħħenieha mill-benchmark.

WeaveNet issa jappoġġja politiki tan-netwerk għal Ingress u Egress! Iżda l-produttività naqset.

F'Calico, għad trid tikkonfigura manwalment id-daqs massimu tal-pakkett (MTU) għall-aħjar prestazzjoni. Calico joffri żewġ għażliet għall-installazzjoni tas-CNI, sabiex tkun tista' tagħmel mingħajr repożitorju separat tal-ETCD:

  • stat tal-ħażna fl-API Kubernetes bħala maħżen tad-dejta (daqs tal-cluster < 50 nodi);
  • stat tal-ħażna fl-API Kubernetes bħala maħżen tad-dejta bi prokura Typha biex ittaffi t-tagħbija fuq l-API K8S (daqs tal-cluster > 50 nodi).

Calico ħabbar appoġġ politiki fil-livell tal-applikazzjoni fuq Istio għas-sigurtà fil-livell tal-applikazzjoni.

Cilium issa jappoġġja l-encryption! Cilium jipprovdi encryption bil-mini IPSec u joffri alternattiva għan-netwerk encrypted WeaveNet. Iżda WeaveNet huwa aktar mgħaġġel minn Cilium bil-kriptaġġ attivat.

Cilium issa huwa aktar faċli biex jintuża grazzi għall-operatur integrat tal-ETCD.

It-tim ta 'Cilium ipprova jnaqqas xi piż mis-CNI tiegħu billi jnaqqas il-konsum tal-memorja u l-ispejjeż tas-CPU, iżda l-kompetituri tiegħu għadhom eħfef.

Kuntest ta' referenza

Il-punt ta’ referenza jitmexxa fuq tliet servers Supermicro mhux virtwali bi swiċċ Supermicro ta’ 10 Gb. Is-servers huma konnessi direttament mal-iswiċċ permezz ta 'kejbils DAC SFP+ passivi u huma kkonfigurati fuq l-istess VLAN b'frejms jumbo (MTU 9000).

Kubernetes 1.14.0 installat fuq Ubuntu 18.04 LTS b'Docker 18.09.2 (il-verżjoni default Docker f'dan ir-rilaxx).

Biex intejbu r-riproduċibilità, iddeċidejna li dejjem tikkonfigura l-kaptan fuq l-ewwel node, poġġi l-parti tas-server tal-punt ta 'referenza fuq it-tieni server, u l-parti tal-klijent fuq it-tielet. Biex nagħmlu dan, nużaw NodeSelector fl-iskjeramenti ta' Kubernetes.

Aħna ser niddeskrivu r-riżultati tal-benchmark fuq l-iskala li ġejja:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

Għażla ta' CNI għal benchmark

Dan huwa punt ta' referenza biss għal CNI mil-lista fit-taqsima dwar il-ħolqien ta 'grupp ewlieni wieħed ma' kubeadm Ara d-dokumentazzjoni uffiċjali ta' Kubernetes. Mid-9 CNIs, se nieħdu 6 biss: se neskludu dawk li huma diffiċli biex jiġu installati u/jew ma jaħdmux mingħajr konfigurazzjoni skont id-dokumentazzjoni (Romana, Contiv-VPP u JuniperContrail/TungstenFabric).

Se nqabblu s-CNIs li ġejjin:

  • Calico v3.6
  • Canal v3.6 (essenzjalment Flannel għan-netwerking + Calico bħala firewall)
  • Cilium 1.4.2
  • Flanella 0.11.0
  • Kube-router 0.2.5
  • WeaveNet 2.5.1

Installazzjoni

Iktar ma jkun faċli li tinstalla s-CNI, aħjar tkun l-ewwel impressjoni tagħna. Is-CNIs kollha mill-benchmark huma faċli ħafna biex jiġu installati (b'kmandi wieħed jew tnejn).

Kif għidna, is-servers u l-iswiċċ huma kkonfigurati b'frejms jumbo attivati ​​(aħna nissettjaw l-MTU għal 9000). Inkunu kuntenti jekk is-CNI tiddetermina awtomatikament l-MTU abbażi tal-konfigurazzjoni tal-adapters. Madankollu, Cilium u Flannel biss irnexxielhom dan. Il-bqija tas-CNIs għandhom talbiet fuq GitHub biex iżidu skoperta awtomatika tal-MTU, iżda aħna ser tikkonfiguraha manwalment billi nibdlu l-ConfigMap għal Calico, Canal u Kube-router, jew ngħaddu varjabbli ambjentali għal WeaveNet.

X'inhi l-problema b'MTU żbaljat? Din id-dijagramma turi d-differenza bejn WeaveNet b'MTU default u frames jumbo attivati:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Kif l-MTU jaffettwa t-throughput?

Rajna kemm huwa importanti l-MTU għall-prestazzjoni, issa ejja naraw kif is-CNIs tagħna jiddeterminawha awtomatikament:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
CNI awtomatikament jiskopri MTU

Il-graff turi li għandek bżonn tikkonfigura l-MTU għal Calico, Canal, Kube-router u WeaveNet għall-aħjar prestazzjoni. Cilium u Flannel setgħu jiddeterminaw b'mod korrett l-MTU huma stess mingħajr ebda settings.

sigurtà

Se nqabblu s-sigurtà tas-CNI f'żewġ aspetti: il-kapaċità li nikkriptaw id-dejta trażmessa u l-implimentazzjoni tal-politiki tan-netwerk Kubernetes (ibbażati fuq testijiet reali, mhux dokumentazzjoni).

Żewġ CNI biss jikkriptaw id-dejta: Cilium u WeaveNet. Encryption WeaveNet ppermettiet billi tissettja l-password tal-kriptaġġ bħala varjabbli ambjentali CNI. IN dokumentazzjoni WeaveNet jiddeskriviha b'mod ikkumplikat, iżda kollox isir b'mod sempliċi. Encryption Ċilium kkonfigurat mill-kmandi, billi jinħolqu sigrieti Kubernetes, u permezz tal-modifika tad-daemonSet (ftit aktar ikkumplikat minn WeaveNet, iżda Cilium għandu pass pass istruzzjonijiet).

Fir-rigward tal-implimentazzjoni tal-politika tan-netwerk, huma rnexxielhom Calico, Canal, Cilium u WeaveNet, li fiha tista' tikkonfigura r-regoli ta' Dħul u Ħruġ. Għal Kube-router hemm regoli biss għall-Ingress, u Flannel M'hemm l-ebda politika tan-netwerk għal kollox.

Hawn huma r-riżultati ġenerali:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Riżultati ta' Benchmark tal-Prestazzjoni tas-Sigurtà

Produttività

Dan il-punt ta' referenza juri t-throughput medju fuq mill-inqas tliet ġirjiet ta' kull test. Aħna nittestjaw il-prestazzjoni ta 'TCP u UDP (bl-użu ta' iperf3), applikazzjonijiet reali bħal HTTP (b'Nginx u curl) jew FTP (b' vsftpd u curl) u finalment il-prestazzjoni tal-applikazzjoni bl-użu ta 'encryption ibbażat fuq SCP (bl-użu ta' klijent u server OpenSSH).

Għat-testijiet kollha, għamilna punt ta' referenza tal-metall vojt (linja ħadra) biex inqabblu l-prestazzjoni tas-CNI mal-prestazzjoni tan-netwerk nattiv. Hawnhekk nużaw l-istess skala, iżda bil-kulur:

  • Isfar = tajjeb ħafna
  • Oranġjo = tajjeb
  • Blu = hekk hekk
  • Aħmar = ħażin

Aħna mhux se nieħdu CNIs ikkonfigurati ħażin u nuru biss riżultati għal CNIs bl-MTU korrett. (Nota: Cilium ma jikkalkulax b'mod korrett l-MTU jekk tippermetti l-encryption, għalhekk ikollok tnaqqas manwalment l-MTU għal 8900 fil-verżjoni 1.4. Il-verżjoni li jmiss, 1.5, tagħmel dan awtomatikament.)

Hawn huma r-riżultati:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Prestazzjoni TCP

Is-CNIs kollha marru tajjeb fil-benchmark tat-TCP. Is-CNI b'encryption għadha lura ħafna minħabba li l-encryption hija għalja.

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Prestazzjoni UDP

Hawnhekk ukoll, is-CNIs kollha sejrin tajjeb. CNI b'encryption wera kważi l-istess riżultat. Cilium huwa ftit wara l-kompetizzjoni, iżda huwa biss 2,3% tal-metall vojt, għalhekk mhuwiex riżultat ħażin. Tinsiex li Cilium u Flannel biss iddeterminaw l-MTU b'mod korrett huma stess, u dawn huma r-riżultati tagħhom mingħajr ebda konfigurazzjoni addizzjonali.

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

Xi ngħidu dwar applikazzjoni reali? Kif tistgħu taraw, il-prestazzjoni ġenerali għal HTTP hija kemxejn inqas minn għal TCP. Anke jekk tuża HTTP ma 'TCP, aħna kkonfigurajna iperf3 fil-benchmark TCP biex nevitaw bidu bil-mod li jaffettwa l-benchmark HTTP. Kulħadd għamel xogħol tajjeb hawn. Kube-router għandu vantaġġ ċar, iżda WeaveNet ma wettaqx tajjeb: madwar 20% agħar minn bare metal. Cilium u WeaveNet b'encryption jidhru tassew imdejjaq.

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

Bl-FTP, protokoll ieħor ibbażat fuq TCP, ir-riżultati jvarjaw. Flannel u Kube-router jagħmlu x-xogħol, iżda Calico, Canal u Cilium huma ftit lura u huma madwar 10% aktar bil-mod mill-metall vojt. WeaveNet jinsab lura sa 17%, iżda WeaveNet ikkodifikat huwa 40% qabel Cilium ikkodifikat.

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

B'SCP nistgħu naraw immedjatament kemm jiswielna l-encryption SSH. Kważi s-CNIs kollha sejrin tajjeb, iżda WeaveNet reġa' għadu lura. Cilium u WeaveNet b'encryption mistennija huma l-agħar minħabba l-encryption doppja (SSH + CNI).

Hawnhekk hawn tabella fil-qosor bir-riżultati:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

Konsum tar-riżorsi

Issa ejja nqabblu kif is-CNI jikkonsma r-riżorsi taħt tagħbijiet tqal (matul it-trasferiment TCP, 10 Gbps). Fit-testijiet tal-prestazzjoni nqabblu CNI mal-metall vojt (linja ħadra). Għall-konsum tar-riżorsi, ejja nuru Kubernetes pur (linja vjola) mingħajr CNI u ara kemm CNI tikkonsma riżorsi żejda.

Nibdew bil-memorja. Hawn hu l-valur medju għar-RAM tan-nodi (esklużi buffers u cache) f'MB waqt it-trasferiment.

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Konsum tal-memorja

Flannel u Kube-router wrew riżultati eċċellenti - 50 MB biss. Calico u Canal kull wieħed għandhom 70. WeaveNet jikkunsma b'mod ċar aktar mill-oħrajn - 130 MB, u Cilium juża daqs 400.
Issa ejja niċċekkjaw il-konsum tal-ħin tas-CPU. Ta’ min jinnota: id-dijagramma turi mhux perċentwali, iżda ppm, jiġifieri, 38 ppm għal "ħadid vojt" huwa 3,8%. Hawn huma r-riżultati:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Konsum tas-CPU

Calico, Canal, Flannel u Kube-router huma CPU effiċjenti ħafna - 2% biss aktar minn Kubernetes mingħajr CNI. WeaveNet għadu lura ħafna b'5% żejda, segwit minn Cilium b'7%.

Hawn sommarju tal-konsum tar-riżorsi:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)

Riżultati ta '

Tabella bir-riżultati kollha:

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Riżultati ta' referenza ġenerali

Konklużjoni

Fl-aħħar parti se nesprimi l-opinjoni suġġettiva tiegħi dwar ir-riżultati. Ftakar li dan il-punt ta' referenza jittestja biss il-fluss ta' konnessjoni waħda fuq cluster żgħir ħafna (3 nodi). Ma japplikax għal clusters kbar (<50 nodi) jew konnessjonijiet paralleli.

Nirrakkomanda li tuża s-CNIs li ġejjin skont ix-xenarju:

  • Għandek fil-cluster tiegħek nodi bi ftit riżorsi (diversi GB ta 'RAM, diversi qlub) u m'għandekx bżonn karatteristiċi ta' sigurtà - agħżel Flannel. Din hija waħda mill-aktar CNIs kosteffettivi. U huwa kompatibbli ma 'varjetà wiesgħa ta' arkitetturi (amd64, arm, arm64, eċċ.). Barra minn hekk, dan huwa wieħed minn tnejn (l-ieħor huwa Cilium) CNI li jistgħu jiddeterminaw awtomatikament l-MTU, sabiex ma jkollokx għalfejn tikkonfigura xejn. Kube-router huwa adattat ukoll, iżda mhuwiex bħala standard u ser ikollok bżonn tikkonfigura manwalment l-MTU.
  • Jekk meħtieġ kriptaġġ tan-netwerk għas-sigurtà, ħu WeaveNet. Tinsiex tispeċifika d-daqs MTU jekk qed tuża jumbo frames, u ppermetti l-encryption billi tispeċifika password permezz ta' varjabbli ambjentali. Iżda huwa aħjar li tinsa dwar il-prestazzjoni - dik hija l-ispiża tal-kriptaġġ.
  • Għal użu normali Nagħti parir Calico. Dan is-CNI huwa użat ħafna f'diversi għodod ta 'skjerament ta' Kubernetes (Kops, Kubespray, Rancher, eċċ.). Bħal WeaveNet, kun żgur li tikkonfigura l-MTU f'ConfigMap jekk tuża jumbo frames. Hija għodda multi-funzjonali li hija effiċjenti f'termini ta 'konsum tar-riżorsi, prestazzjoni u sigurtà.

U finalment, nagħtik parir biex issegwi l-iżvilupp Ċilium. Dan is-CNI għandu tim attiv ħafna li jaħdem ħafna fuq il-prodott tagħhom (karatteristiċi, iffrankar tar-riżorsi, prestazzjoni, sigurtà, clustering...) u għandhom pjanijiet interessanti ħafna.

Kubernetes Networking Plugin (CNI) Riżultati ta' Benchmark fuq Netwerk ta' 10 Gbps (aġġornat f'April 2019)
Dijagramma viżwali għall-għażla tas-CNI

Sors: www.habr.com

Żid kumment