CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

TL; DR: Kõik CNI-d töötavad nii nagu peavad, välja arvatud Kube-Router ja Kube-OVN, Calico, välja arvatud automaatne MTU tuvastamine, on parim.

Minu varasemate kontrollide artikli värskendus (2018 и 2019), kasutan testimise ajal Ubuntu 1.19 versioonis Kubernetes 18.04, mille CNI-d on 2020. aasta augusti seisuga värskendatud.

Enne kui sukeldume mõõdikutesse...

Mis on uut alates 2019. aasta aprillist?

  • Saate testida oma klastris: meie tööriista abil saate oma klastris testida Kubernetese võrgu võrdlusalus: knb
  • Uusi liikmeid on ilmunud
  • Uued stsenaariumid: praegused kontrollid käitavad "Pod-to-Pod" võrgu jõudluse teste ja on lisatud uus "Pod-to-Service" skript, mis käivitab testid reaalsetele tingimustele lähemal. Praktikas töötab teie Pod koos API-ga teenusena baasiga, mitte Podi IP-aadressi kaudu (muidugi kontrollime mõlema stsenaariumi puhul nii TCP-d kui ka UDP-d).
  • Ressursitarbimine: igal testil on nüüd oma ressursside võrdlus
  • Rakendustestide eemaldamine: me ei tee enam HTTP, FTP ja SCP teste, kuna meie viljakas koostöö kogukonna ja CNI hooldajatega on avastanud lünga iperf-i tulemuste vahel TCP-ga võrreldes ja curl-tulemuste vahel, mis on tingitud CNI käivitamise viivitusest (Podi esimesed sekundid käivitamine, mis pole reaalsetes tingimustes tüüpiline).
  • Avatud lähtekoodiga: kõik testallikad (skriptid, yml-i sätted ja algsed toorandmed) on saadaval siin

Viitetesti protokoll

Protokolli kirjeldatakse üksikasjalikult siinPange tähele, et see artikkel käsitleb Ubuntu 18.04 vaiketuumaga.

CNI valimine hindamiseks

Selle testimise eesmärk on võrrelda ühe yaml-failiga konfigureeritud CNI-sid (seetõttu on välja jäetud kõik need, mis on installitud skriptidega, nagu VPP ja teised).

Meie valitud CNI-d võrdluseks:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flanneli võrk + Calico võrgueeskirjad)
  • Cilium 1.8.2
  • Flanell 0.12.0
  • Kube-ruuteri uusim (2020–08–25)
  • WeaveNet 2.7.0

MTU seadistamine CNI jaoks

Kõigepealt kontrollime automaatse MTU tuvastamise mõju TCP jõudlusele:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

MTU mõju TCP jõudlusele

UDP kasutamisel leitakse veelgi suurem tühimik:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)
MTU mõju UDP jõudlusele

Arvestades testides ilmnenud tohutut mõju jõudlusele, soovime saata kõigile CNI hooldajatele lootuskirja: lisage CNI-le automaatne MTU tuvastamine. Päästate kassipojad, ükssarvikud ja isegi kõige armsama: väikese Devopi.

Kui aga peate kasutama CNI-d ilma automaatse MTU tuvastamise toeta, saate selle jõudluse saavutamiseks käsitsi konfigureerida. Pange tähele, et see kehtib Calico, Canali ja WeaveNeti kohta.

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)
Minu väike palve kaasasolevatele CNI-dele...

CNI testimine: töötlemata andmed

Selles jaotises võrdleme CNI-d õige MTU-ga (määratud automaatselt või käsitsi). Peamine eesmärk on siin näidata algandmeid graafikutena.

Värvi legend:

  • hall – näidis (st paljas raud)
  • roheline - ribalaius üle 9500 Mbps
  • kollane - ribalaius üle 9000 Mbps
  • oranž – ribalaius üle 8000 Mbps
  • punane - ribalaius alla 8000 Mbps
  • sinine – neutraalne (ei ole seotud ribalaiusega)

Koormamata ressursitarbimine

Kõigepealt kontrollige ressursitarbimist, kui klaster "magab".

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)
Koormamata ressursitarbimine

Kaubast kaunasse

See stsenaarium eeldab, et kliendi Pod loob oma IP-aadressi kasutades otse ühenduse serveri Podiga.

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)
Pod-to-Pod stsenaarium

TCP

Pod-to-Pod TCP tulemused ja vastav ressursikulu:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

UDP

Pod-to-Pod UDP tulemused ja vastav ressursitarbimine:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

Pod-to-Service

See jaotis on asjakohane tegelikel kasutusjuhtudel, kliendi Pod loob ühenduse serveri Podiga ClusterIP teenuse kaudu.

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)
Pod-to-Service skript

TCP

Pod-to-Service TCP tulemused ja vastav ressursikulu:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

UDP

Pod-to-Service UDP tulemused ja vastav ressursikulu:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

Võrgupoliitika tugi

Kõigi eelmainitute seas on ainus, kes poliitikat ei toeta, Flanell. Kõik teised rakendavad õigesti võrgupoliitikat, sealhulgas sissetulevat ja väljuvat. Suurepärane töö!

CNI krüptimine

Kontrollitud CNI-de hulgas on neid, mis suudavad krüpteerida võrguvahetust Podide vahel:

  • Antrea kasutab IPsec
  • Calico kasutades juhtmekaitset
  • Cilium, kasutades IPsec
  • WeaveNet IPseci abil

Läbilaskevõime

Kuna CNI-sid on jäänud vähem, paneme kõik stsenaariumid ühte graafikut:

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

Ressursi tarbimine

Selles jaotises hindame ressursse, mida kasutatakse Pod-to-Pod-side töötlemisel TCP-s ja UDP-s. Pod-to-Service graafikut pole mõtet joonistada, kuna see ei anna lisateavet.

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

Kõike kokku panema

Proovime korrata kõiki graafikuid, tutvustasime siin veidi subjektiivsust, asendades tegelikud väärtused sõnadega “vwry fast”, “low” jne.

CNI jõudluse hindamine Kubernetese jaoks 10G võrgu kaudu (august 2020)

Järeldus ja minu järeldused

See on veidi subjektiivne, kuna annan edasi oma tõlgenduse tulemustest.

Mul on hea meel, et ilmusid uued CNI-d, Antrea toimis hästi, paljud funktsioonid rakendati isegi varajastes versioonides: automaatne MTU tuvastamine, krüpteerimine ja lihtne installimine.

Kui võrrelda jõudlust, töötavad kõik CNI-d hästi, välja arvatud Kube-OVN ja Kube-Router. Kube-Router ei suutnud ka MTU-d tuvastada, ma ei leidnud kuskilt dokumentatsioonist võimalust selle seadistamiseks ( siin taotlus sellel teemal on avatud).

Ressursikasutuse osas kasutab Cilium endiselt rohkem RAM-i kui teised, kuid tootja on selgelt sihikule võtnud suured klastrid, mis ei ole ilmselgelt sama, mis kolme sõlmega klastri testimine. Kube-OVN tarbib ka palju protsessori- ja RAM-i ressursse, kuid see on noor CNI, mis põhineb Open vSwitchil (nagu Antrea, töötab see paremini ja tarbib vähem).

Kõigil peale Flannel on võrgupoliitika. On väga tõenäoline, et ta ei toeta neid kunagi, sest eesmärk on lihtsam kui aurutatud naeris: mida kergem, seda parem.

Lisaks muule on krüpteerimise jõudlus hämmastav. Calico on üks vanimaid CNI-sid, kuid krüpteerimine lisati alles paar nädalat tagasi. Nad valisid IPseci asemel juhtmekaitse ja lihtsalt öeldes töötab see suurepäraselt ja hämmastavalt, jättes testimise selles osas täiesti varju teised CNI-d. Loomulikult suureneb krüpteerimise tõttu ressursikulu, kuid saavutatud läbilaskevõime on seda väärt (Calico näitas krüpteerimistestis kuuekordset paranemist võrreldes teisel kohal oleva Ciliumiga). Lisaks saate Wireguardi lubada igal ajal pärast Calico klastris juurutamist ning soovi korral ka lühikeseks ajaks või jäädavalt keelata. See on aga uskumatult mugav! Tuletame meelde, et Calico ei tuvasta praegu automaatselt MTU-d (see funktsioon on tulevaste versioonide jaoks kavandatud), seega konfigureerige kindlasti MTU, kui teie võrk toetab Jumbo Frames (MTU 9000).

Muu hulgas pange tähele, et Cilium saab krüpteerida liiklust klastri sõlmede vahel (ja mitte ainult Podide vahel), mis võib olla avalike klastri sõlmede jaoks väga oluline.

Kokkuvõtteks pakun välja järgmised kasutusjuhud:

  • Vajan väga väikese klastri jaoks CNI-d VÕI ma ei vaja turvalisust: töötama koos Flanell, kergeim ja stabiilseim CNI (ta on ka üks vanemaid, legendi järgi mõtles ta välja Homo Kubernautus ehk Homo Contaitorus). Samuti võite olla huvitatud kõige geniaalsemast projektist k3, Kontrollima!
  • Tavalise klastri jaoks on vaja CNI-d: Calico - teie valik, kuid ärge unustage vajadusel MTU-d konfigureerida. Saate lihtsalt ja loomulikult mängida võrgupoliitikatega, lülitada krüptimist sisse ja välja jne.
  • Vajame (väga) suuremahulise klastri jaoks CNI-d: Noh, test ei näita suurte klastrite käitumist, ma teeksin hea meelega teste, kuid meil pole sadu 10 Gbps ühendusega servereid. Nii et parim valik on käivitada oma sõlmedel modifitseeritud test, vähemalt Calico ja Ciliumiga.

Allikas: www.habr.com

Lisa kommentaar