Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Mao ni akong update miaging benchmark, nga karon nagdagan sa Kubernetes 1.14 nga adunay pinakabag-o nga bersyon sa CNI kaniadtong Abril 2019.

Una sa tanan, gusto nakong pasalamatan ang Cilium team: ang mga lalaki mitabang kanako sa pagsusi ug pagtul-id sa mga metrics monitoring scripts.

Unsa ang nausab sukad sa Nobyembre 2018

Ania ang nabag-o sukad niadto (kung interesado ka):

Ang flannel nagpabilin nga pinakapaspas ug pinakasimple nga interface sa CNI, apan wala gihapon mosuporta sa mga polisiya sa network ug encryption.

Dili na suportado ang Romana, mao nga gitangtang namo kini sa benchmark.

Gisuportahan na karon sa WeaveNet ang mga palisiya sa network para sa Ingress ug Egress! Apan ang pagka-produktibo mikunhod.

Sa Calico, kinahanglan nimo nga mano-mano nga i-configure ang maximum packet size (MTU) alang sa labing maayo nga performance. Nagtanyag ang Calico og duha ka kapilian sa pag-install sa CNI, aron mahimo nimo nga wala’y lahi nga repositoryo sa ETCD:

  • pagtago sa estado sa Kubernetes API isip usa ka data store (cluster size <50 nodes);
  • pagtago sa estado sa Kubernetes API isip usa ka data store nga adunay Typha proxy aron mahupay ang load sa K8S API (cluster size > 50 nodes).

Gipahibalo ni Calico ang suporta mga palisiya sa lebel sa aplikasyon sa ibabaw sa Istio alang sa seguridad sa lebel sa aplikasyon.

Gisuportahan na karon sa Cilium ang pag-encrypt! Ang Cilium naghatag og encryption sa IPSec tunnels ug nagtanyag og alternatibo sa naka-encrypt nga WeaveNet network. Apan ang WeaveNet mas paspas kay sa Cilium nga adunay encryption.

Ang Cilium mas sayon ​​na karon nga ma-deploy salamat sa built-in nga ETCD operator.

Ang team sa Cilium misulay sa pagputol sa pipila ka gibug-aton gikan sa CNI niini pinaagi sa pagkunhod sa konsumo sa memorya ug mga gasto sa CPU, apan ang mga kakompetensya niini mas gaan.

Benchmark nga konteksto

Ang benchmark gipadagan sa tulo nga dili virtual nga Supermicro server nga adunay 10 Gb Supermicro switch. Ang mga server direkta nga konektado sa switch pinaagi sa passive DAC SFP + nga mga kable ug gi-configure sa parehas nga VLAN nga adunay jumbo frame (MTU 9000).

Ang Kubernetes 1.14.0 nga gi-install sa Ubuntu 18.04 LTS nga adunay Docker 18.09.2 (ang default nga bersyon sa Docker sa kini nga pagpagawas).

Aron mapalambo ang reproducibility, nakahukom kami nga kanunay nga i-configure ang master sa unang node, ibutang ang server nga bahin sa benchmark sa ikaduhang server, ug ang kliyente nga bahin sa ikatulo. Aron mahimo kini, gigamit namon ang NodeSelector sa mga pag-deploy sa Kubernetes.

Atong ihulagway ang mga resulta sa benchmark sa mosunod nga sukod:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Pagpili sa usa ka CNI alang sa usa ka benchmark

Kini usa ka benchmark alang lamang sa CNI gikan sa lista sa seksyon mahitungod sa paghimo sa usa ka master cluster nga adunay kubeadm Tan-awa ang opisyal nga dokumentasyon sa Kubernetes. Sa 9 ka CNIs, 6 ra ang among kuhaon: dili namo iapil kadtong lisud i-install ug/o dili mogana nga walay configuration sumala sa dokumentasyon (Romana, Contiv-VPP ug JuniperContrail/TungstenFabric).

Atong itandi ang mosunod nga mga CNI:

  • Calico v3.6
  • Canal v3.6 (esensyal nga Flannel para sa networking + Calico isip firewall)
  • Cilium 1.4.2
  • Flannel 0.11.0
  • Kube-router 0.2.5
  • WeaveNet 2.5.1

Pag-instalar

Kon mas sayon ​​​​ang pag-instalar sa CNI, mas maayo ang atong unang impresyon. Ang tanan nga mga CNI gikan sa benchmark dali ra ma-install (nga adunay usa o duha nga mga sugo).

Sama sa among giingon, ang mga server ug switch gi-configure nga adunay mga jumbo frame nga gipagana (gibutang namon ang MTU sa 9000). Malipay kami kung ang CNI awtomatik nga magtino sa MTU base sa configuration sa mga adapter. Bisan pa, ang Cilium ug Flannel ra ang nakadumala niini. Ang uban nga mga CNI adunay mga hangyo sa GitHub aron idugang ang awtomatik nga pagkadiskobre sa MTU, apan among i-configure kini pinaagi sa pagbag-o sa ConfigMap para sa Calico, Canal ug Kube-router, o pagpasa sa variable sa palibot alang sa WeaveNet.

Unsa ang problema sa dili husto nga MTU? Kini nga diagram nagpakita sa kalainan tali sa WeaveNet nga ang default nga MTU ug jumbo frames gipagana:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Sa unsang paagi ang MTU makaapekto sa throughput?

Nakita namon kung unsa ka hinungdanon ang MTU alang sa pasundayag, karon tan-awon naton kung giunsa kini awtomatikong mahibal-an sa among mga CNI:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Awtomatikong namatikdan sa CNI ang MTU

Ang graph nagpakita nga kinahanglan nimo nga i-configure ang MTU para sa Calico, Canal, Kube-router ug WeaveNet para sa labing maayo nga performance. Ang Cilium ug Flannel nakahimo sa husto nga pagtino sa MTU sa ilang kaugalingon nga walay bisan unsang mga setting.

Kasegurohan

Atong itandi ang seguridad sa CNI sa duha ka aspeto: ang abilidad sa pag-encrypt sa gipasa nga datos ug ang pagpatuman sa mga polisiya sa network sa Kubernetes (base sa tinuod nga mga pagsulay, dili dokumentasyon).

Duha ra ka CNI ang nag-encrypt sa datos: Cilium ug WeaveNet. Encryption WeaveNet gi-enable pinaagi sa pag-set sa encryption password isip CNI environment variable. SA dokumentasyon Gihulagway kini sa WeaveNet sa usa ka komplikado nga paagi, apan ang tanan nahimo nga yano. Encryption cilium gi-configure pinaagi sa mga mando, pinaagi sa paghimo sa mga sekreto sa Kubernetes, ug pinaagi sa pagbag-o sa daemonSet (mas komplikado kaysa sa WeaveNet, apan ang Cilium adunay sunod-sunod nga lakang. mga instruksyon).

Mahitungod sa pagpatuman sa polisiya sa network, sila milampos Calico, Canal, Cilium ug WeaveNet, diin mahimo nimong i-configure ang mga lagda sa Ingress ug Egress. Kay Kube-router adunay mga lagda alang lamang sa Ingress, ug Flannel Wala gayuy mga polisiya sa network.

Ania ang kinatibuk-ang resulta:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Mga Resulta sa Benchmark sa Pagganap sa Kaluwasan

Pag-uswag

Kini nga benchmark nagpakita sa kasagaran nga throughput sa labing menos tulo ka dagan sa matag pagsulay. Among gisulayan ang performance sa TCP ug UDP (gamit ang iperf3), tinuod nga mga aplikasyon sama sa HTTP (uban sa Nginx ug curl) o FTP (uban sa vsftpd ug curl) ug sa kataposan performance sa aplikasyon gamit ang SCP-based encryption (gamit ang kliyente ug server OpenSSH).

Alang sa tanan nga mga pagsulay, naghimo kami usa ka hubo nga metal nga benchmark (berde nga linya) aron itandi ang pasundayag sa CNI sa pasundayag sa lumad nga network. Dinhi gigamit namon ang parehas nga sukod, apan sa kolor:

  • Yellow = maayo kaayo
  • Orange = maayo
  • Asul = so-so
  • Pula = dili maayo

Dili kami mokuha ug sayop nga na-configure nga mga CNI ug magpakita lang og mga resulta alang sa mga CNI nga adunay saktong MTU. (Timan-i: Dili husto ang pagkalkula sa Cilium sa MTU kung mahimo nimo ang pag-encrypt, mao nga kinahanglan nimo nga mano-mano nga pakunhuran ang MTU sa 8900 sa bersyon 1.4. Ang sunod nga bersyon, 1.5, awtomatiko nga buhaton kini.)

Ania ang mga resulta:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Pagganap sa TCP

Ang tanan nga mga CNI maayo ang nahimo sa TCP benchmark. Ang CNI nga adunay encryption layo kaayo tungod kay ang encryption mahal.

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
UDP performance

Dinhi, usab, ang tanan nga mga CNI maayo. Ang CNI nga adunay encryption nagpakita sa halos parehas nga resulta. Ang Cilium usa ka gamay nga luyo sa kompetisyon, apan kini 2,3% lamang sa bare metal, mao nga dili kini daotan nga resulta. Ayaw kalimti nga ang Cilium ug Flannel lamang ang nagtino sa MTU sa husto nga paagi, ug kini ang ilang mga resulta nga wala’y dugang nga pag-configure.

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Unsa ang mahitungod sa usa ka tinuod nga aplikasyon? Sama sa imong makita, ang kinatibuk-ang pasundayag alang sa HTTP gamay nga ubos kaysa sa TCP. Bisan kung imong gigamit ang HTTP sa TCP, among gi-configure ang iperf3 sa TCP benchmark aron malikayan ang hinay nga pagsugod nga makaapekto sa HTTP benchmark. Maayo ang gibuhat sa tanan dinhi. Ang Kube-router adunay usa ka tin-aw nga bentaha, apan ang WeaveNet dili maayo nga nahimo: mga 20% nga labi ka daotan kaysa hubo nga metal. Ang Cilium ug WeaveNet nga adunay encryption tan-awon nga masulub-on.

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Uban sa FTP, laing protocol nga nakabase sa TCP, lainlain ang mga resulta. Ang Flannel ug Kube-router ang nagbuhat sa trabaho, apan ang Calico, Canal ug Cilium gamay ra sa likod ug mga 10% nga mas hinay kay sa hubo nga metal. Ang WeaveNet anaa sa luyo sa 17%, apan ang naka-encrypt nga WeaveNet kay 40% nga nag-una sa naka-encrypt nga Cilium.

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Sa SCP makita dayon nato kung pila ang gasto sa SSH encryption kanato. Hapit tanan nga mga CNI maayo, apan ang WeaveNet nahilayo na usab. Ang Cilium ug WeaveNet nga adunay encryption gilauman nga ang pinakagrabe tungod sa double encryption (SSH + CNI).

Ania ang usa ka summary table uban sa mga resulta:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Pagkonsumo sa kahinguhaan

Karon atong itandi kung giunsa pagkonsumo sa CNI ang mga kapanguhaan ubos sa bug-at nga mga karga (sa panahon sa pagbalhin sa TCP, 10 Gbps). Sa mga pagsulay sa pasundayag atong itandi ang CNI sa hubo nga metal (berde nga linya). Para sa konsumo sa kahinguhaan, ipakita nato ang lunsay nga Kubernetes (linya nga purpura) nga walay CNI ug tan-awon kung pila ka dugang nga kahinguhaan ang gigamit sa CNI.

Magsugod ta sa memorya. Ania ang kasagaran nga kantidad alang sa RAM sa mga node (wala’y labot ang mga buffer ug cache) sa MB sa panahon sa pagbalhin.

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Pagkonsumo sa memorya

Ang Flannel ug Kube-router nagpakita og maayo kaayo nga mga resulta - 50 MB lamang. Ang Calico ug Canal matag usa adunay 70. Ang WeaveNet tin-aw nga nagkonsumo labaw pa sa uban - 130 MB, ug ang Cilium naggamit ug 400.
Karon atong susihon ang konsumo sa oras sa CPU. Talalupangdon: ang diagram nagpakita dili mga porsyento, apan ppm, nga mao, 38 ppm alang sa "hubo nga puthaw" mao ang 3,8%. Ania ang mga resulta:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
konsumo sa CPU

Ang Calico, Canal, Flannel ug Kube-router kay episyente kaayo sa CPU - 2% lang kay sa Kubernetes nga walay CNI. Ang WeaveNet layo kaayo sa luyo nga adunay dugang nga 5%, gisundan sa Cilium sa 7%.

Ania ang usa ka summary sa konsumo sa kapanguhaan:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)

Mga resulta

Talaan uban sa tanang resulta:

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Kinatibuk-ang benchmark nga mga resulta

konklusyon

Sa kataposang bahin akong ipahayag ang akong suhetibong opinyon sa mga resulta. Hinumdomi nga kini nga benchmark nagsulay lamang sa throughput sa usa ka koneksyon sa usa ka gamay kaayo nga cluster (3 nodes). Wala kini magamit sa dagkong mga cluster (<50 nodes) o parallel nga koneksyon.

Girekomendar nako ang paggamit sa mosunod nga mga CNI depende sa senaryo:

  • Naa ba ka sa imong cluster mga node nga adunay gamay nga mga kapanguhaan (daghang GB sa RAM, daghang mga core) ug dili nimo kinahanglan ang mga bahin sa seguridad - pilia Flannel. Kini mao ang usa sa labing cost-effective nga CNIs. Ug kini nahiuyon sa daghang lainlaing mga arkitektura (amd64, bukton, arm64, ug uban pa). Dugang pa, kini usa sa duha (ang lain mao ang Cilium) CNI nga awtomatik nga matino ang MTU, mao nga dili nimo kinahanglan nga i-configure ang bisan unsang butang. Ang Kube-router angay usab, apan dili kini ingon nga sukaranan ug kinahanglan nimo nga mano-mano nga i-configure ang MTU.
  • Kung gikinahanglan pag-encrypt sa network para sa kaluwasan, kuhaa WeaveNet. Ayaw kalimot sa pagpiho sa gidak-on sa MTU kon ikaw naggamit ug jumbo frames, ug i-enable ang encryption pinaagi sa pagtino sa password pinaagi sa environment variable. Apan mas maayo nga kalimtan ang bahin sa pasundayag - kana ang gasto sa pag-encrypt.
  • Sa normal nga paggamit советую Calico. Kini nga CNI kaylap nga gigamit sa lain-laing mga Kubernetes deployment tool (Kops, Kubespray, Rancher, ug uban pa). Sama sa WeaveNet, siguruha nga i-configure ang MTU sa ConfigMap kung mogamit mga jumbo frame. Kini usa ka multi-functional nga himan nga episyente sa mga termino sa pagkonsumo sa kapanguhaan, pasundayag ug seguridad.

Ug sa katapusan, gitambagan ko ikaw nga sundon ang pag-uswag cilium. Kini nga CNI adunay usa ka aktibo kaayo nga grupo nga nagtrabaho pag-ayo sa ilang produkto (mga bahin, pagtipig sa kahinguhaan, pasundayag, seguridad, clustering ...) ug sila adunay makapaikag kaayo nga mga plano.

Mga Resulta sa Benchmark sa Kubernetes Network Plugin (CNI) nga labaw sa 10 Gbps Network (Gi-update: Abril 2019)
Visual diagram alang sa pagpili sa CNI

Source: www.habr.com

Idugang sa usa ka comment