CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

TL; DR: Alle CNI's werk soos hulle moet, met die uitsondering van Kube-Router en Kube-OVN, Calico, met die uitsondering van outomatiese MTU-opsporing, is die beste.

Artikel-opdatering van my vorige tjeks (2018 ΠΈ 2019), ten tyde van die toets loop ek Kubernetes 1.19 op Ubuntu 18.04 met opgedateerde CNI's vir Augustus 2020.

Voordat jy in metrieke duik...

Wat is nuut vanaf April 2019?

  • U kan op u eie groepering toets: u kan toetse op u eie groepering uitvoer deur ons instrument te gebruik Kubernetes Network Benchmark: knb
  • Daar is nuwe lede
  • Nuwe scenario's: Huidige toetse voer "Pod-to-Pod" netwerkprestasietoetse uit, en 'n nuwe "Pod-to-Service" scenario is bygevoeg wat toetse uitvoer wat nader aan werklike toestande is. In die praktyk werk jou Pod met API met die basis as 'n diens, en nie deur die Pod ip-adres nie (natuurlik kontroleer ons beide TCP en UDP vir beide scenario's).
  • Hulpbronverbruik: Elke toets het nou sy eie hulpbronvergelyking
  • Verwydering van toepassingstoetse: Ons doen nie meer HTTP-, FTP- en SCP-toetse nie, aangesien ons vrugbare samewerking met die gemeenskap en CNI-onderhouers 'n gaping gevind het tussen iperf oor TCP-resultate en krulresultate as gevolg van 'n vertraging in CNI-opstart (die eerste paar sekondes) wanneer jy 'n Pod begin, wat nie tipies in die werklike lewe is nie).
  • Oopbron: alle toetsbronne (skrifte, yml-instellings en rou data) is beskikbaar hier

Verwysingstoetsprotokol

Die protokol is gedetailleerd hier, let asseblief daarop dat hierdie artikel handel oor Ubuntu 18.04 met die verstekkern.

Kies 'n CNI vir evaluering

Hierdie toets is daarop gemik om CNI's wat met 'n enkele yaml-lΓͺer gekonfigureer is, te vergelyk (sodat alle geskrifte soos VPP en ander uitgesluit word).

Ons geselekteerde CNI's vir vergelyking:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flannel-netwerk + Calico-netwerkbeleide)
  • Silium 1.8.2
  • Flanel 0.12.0
  • Kube-router nuutste (2020–08–25)
  • WeaveNet 2.7.0

MTU-instelling vir CNI

Eerstens kyk ons ​​na die impak van outomatiese MTU-opsporing op TCP-prestasie:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

Impak van MTU op TCP-prestasie

'n Selfs groter gaping word gevind wanneer UDP gebruik word:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)
Impak van MTU op UDP-prestasie

Met die GROOT prestasie-impak wat in die toetse ontbloot is, wil ons graag 'n brief van hoop aan alle CNI-onderhouers stuur: voeg asseblief outomatiese MTU-bespeuring by CNI. Jy sal katjies, eenhorings, en selfs die oulikste een red: 'n bietjie devopsy.

Nietemin, as jy op enige manier CNI moet neem sonder ondersteuning vir outomatiese MTU-opsporing, kan jy dit handmatig instel om prestasie te kry. Neem asseblief kennis dat dit van toepassing is op Calico, Canal en WeaveNet.

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)
My klein versoek aan die CNI-onderhouers...

CNI-toetsing: rou data

In hierdie afdeling sal ons die CNI vergelyk met die korrekte MTU (outomaties of handmatig bepaal). Die hoofdoel hier is om rou data in die vorm van grafieke te wys.

Kleur legende:

  • grys - monster (d.w.s. kaal yster)
  • groen - deurset is bo 9500 Mbps
  • geel - deurset is bo 9000 Mbps
  • oranje - bandwydte bo 8000 Mbps
  • rooi - deurset onder 8000 Mbps
  • blou - neutraal (nie verwant aan bandwydte nie)

Hulpbronverbruik sonder vrag

Kontroleer eerstens die verbruik van hulpbronne wanneer die groep "slaap".

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)
Hulpbronverbruik sonder vrag

Peul tot Peul

Hierdie scenario veronderstel dat die kliΓ«nt Pod direk aan die bediener Pod koppel deur sy IP-adres.

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)
Peul-tot-peul-scenario

TCP

Pod-tot-Pod TCP-resultate en ooreenstemmende hulpbronverbruik:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

UDP

Pod-tot-Pod UDP-resultate en ooreenstemmende hulpbronverbruik:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

Pod-tot-Diens

Hierdie afdeling is relevant vir werklike gebruik gevalle, die kliΓ«nt Pod koppel aan die bediener Pod deur die ClusterIP diens.

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)
Pod-tot-diens scenario

TCP

Pod-tot-Diens TCP-resultate en ooreenstemmende hulpbronverbruik:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

UDP

Pod-tot-Diens UDP-resultate en ooreenstemmende hulpbronverbruik:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

Ondersteuning van netwerkbeleid

Onder al die bogenoemde is die enigste een wat nie politiek ondersteun nie, Flannel. Alle ander implementeer netwerkbeleide korrek, insluitend inkomende en uitgaande. Goeie werk!

CNI-enkripsie

Onder die getoetste CNI's is diΓ© wat netwerkkommunikasie tussen peule kan enkripteer:

  • Antrea met IPsec
  • Calico met draadskerm
  • Silium met IPsec
  • WeaveNet met behulp van IPsec

deurset

Aangesien daar minder CNI's oor is, kom ons som al die scenario's in een grafiek op:

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

Hulpbronverbruik

In hierdie afdeling sal ons die hulpbronne wat gebruik word in die hantering van TCP en UDP Pod-to-Pod kommunikasie evalueer. Daar is geen sin om 'n Pod-tot-Diens-grafiek te teken nie, aangesien dit nie bykomende inligting verskaf nie.

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

Om dit alles saam te voeg

Kom ons probeer om al die grafieke te herhaal, ons het 'n bietjie subjektiwiteit hier gebring, en die werklike waardes vervang met die woorde "vwry fast", "low", ens.

CNI-prestasie-evaluering vir Kubernetes oor 10G-netwerk (Augustus 2020)

Gevolgtrekking en my bevindinge

Dit is 'n bietjie subjektief, aangesien ek my eie interpretasie van die resultate gee.

Ek is bly dat nuwe CNI's verskyn het, Antrea het goed gevaar, baie kenmerke word selfs in vroeΓ« weergawes geΓ―mplementeer: outomatiese MTU-opsporing, enkripsie en maklike installasie.

Wat prestasie betref, werk alle CNI's goed, behalwe vir Kube-OVN en Kube-Router. Kube-Router kon ook nie die MTU bepaal nie, ek het nΓͺrens in die dokumentasie 'n manier gevind om dit op te stel nie (hier oop versoek oor hierdie onderwerp).

Wat hulpbronverbruik betref, gebruik Cilium steeds meer RAM as ander, maar die vervaardiger teiken duidelik groot clusters, wat duidelik nie dieselfde is as die toets op 'n drie-nodes cluster nie. Kube-OVN verbruik ook baie SVE-tyd en RAM, maar dit is 'n jong CNI gebaseer op Open vSwitch (soos Antrea werk dit beter en met minder verbruik).

Almal het netwerkbeleide behalwe Flannel. Dit is baie waarskynlik dat hy hulle nooit sal ondersteun nie, aangesien die doel eenvoudig is soos 'n gestoomde raap: hoe ligter, hoe beter.

Ook, onder andere, die enkripsie prestasie is 'n plesier. Calico is een van die oudste CNI's, maar enkripsie is eers 'n paar weke gelede bygevoeg. Hulle het wireguard bo IPsec gekies, en om dit eenvoudig te stel, alles werk wonderlik en wonderlik, wat ander CNI's heeltemal uitskakel in hierdie deel van die toets. Natuurlik neem die verbruik van hulpbronne toe as gevolg van enkripsie, maar die deurset wat behaal word, is die moeite werd (Calico in die toets met enkripsie het 'n sesvoudige meerderwaardigheid getoon in vergelyking met Cilium, wat die tweede plek inneem). Boonop kan u wireguard enige tyd aktiveer nadat Calico in die groep ontplooi is, en u kan dit ook vir 'n kort tydjie of permanent deaktiveer as u wil. Dit is egter ongelooflik gerieflik! Ons herinner jou daaraan dat Calico tans nie die MTU outomaties kan opspoor nie (hierdie kenmerk is beplan vir toekomstige vrystellings), so moenie vergeet om die MTU op te stel as jou netwerk Jumbo Frames (MTU 9000) ondersteun nie.

Neem onder andere kennis dat Cilium verkeer tussen cluster nodusse kan enkripteer (en nie net tussen Peule nie), wat baie belangrik kan wees vir publieke cluster nodusse.

As gevolgtrekking stel ek die volgende gebruiksgevalle voor:

  • Benodig 'n CNI vir 'n baie klein groepie OF ek het nie sekuriteit nodig nie: werk met flanel, die mees liggewig en stabiele CNI (hy is een van die oudstes, volgens legende is hy uitgevind deur Homo Kubernautus of Homo Contaitorus). Jy stel dalk ook belang in die vernuftigste projek k3s, tjek!
  • Benodig CNI vir gereelde groepering: Calico - jou keuse, maar moenie vergeet om die MTU aan te pas indien nodig nie. Jy kan maklik en natuurlik met netwerkbeleide speel, enkripsie aan en af ​​skakel, ens.
  • Benodig 'n CNI vir 'n (baie) grootskaalse groeperingA: Wel, die toets wys nie die gedrag van groot groepe nie, ek sal graag toetse laat loop, maar ons het nie honderde bedieners met 'n 10Gbps-verbinding nie. Die beste opsie is dus om 'n gewysigde toets op jou nodusse uit te voer, ten minste met Calico en Cilium.

Bron: will.com

Voeg 'n opmerking