CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

TL; DR: Öll CNIs virka eins og þau eiga að gera, að Kube-Router og Kube-OVN undanskildum, Calico, að undanskildum sjálfvirkri MTU uppgötvun, er best.

Greinaruppfærsla fyrri athugana minna (2018 и 2019), við prófunina er ég að nota Kubernetes 1.19 á Ubuntu 18.04 með uppfærðum CNI frá og með ágúst 2020.

Áður en við förum ofan í mælingar...

Hvað er nýtt síðan í apríl 2019?

  • Getur prófað á þínum eigin klasa: Þú getur keyrt próf á þínum eigin klasa með því að nota tólið okkar Kubernetes netviðmið: knb
  • Nýir meðlimir hafa komið fram
  • Ný sviðsmynd: Núverandi athuganir keyra „Pod-to-Pod“ netafkastapróf og nýtt „Pod-to-Service“ forskrift hefur verið bætt við sem keyrir próf nær raunverulegum aðstæðum. Í reynd virkar Pod þinn með API með grunninn sem þjónustu, en ekki í gegnum Pod ip töluna (auðvitað athugum við bæði TCP og UDP fyrir báðar aðstæður).
  • Auðlindanotkun: hvert próf hefur nú sinn eigin auðlindasamanburð
  • Að fjarlægja forritapróf: Við gerum ekki lengur HTTP, FTP og SCP próf þar sem frjósamlegt samstarf okkar við samfélagið og CNI viðhaldsaðila hefur uppgötvað bil á milli iperf niðurstaðna yfir TCP og krulla niðurstöður vegna seinkun á ræsingu CNI (fyrstu sekúndur Pod gangsetning, sem er ekki dæmigerð við raunverulegar aðstæður).
  • Opinn uppspretta: allar prófunarheimildir (forskriftir, yml stillingar og upprunaleg „hrá“ gögn) eru tiltækar hér

Tilvísunarprófunarbókun

Bókuninni er lýst í smáatriðum hérVinsamlegast athugaðu að þessi grein er um Ubuntu 18.04 með sjálfgefna kjarnanum.

Að velja CNI fyrir mat

Þessi prófun miðar að því að bera saman CNIs sem eru stilltar með einni yaml skrá (þess vegna eru allar þær sem eru settar upp með forskriftum, eins og VPP og fleiri, útilokaðar).

Valin CNIs okkar til samanburðar:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flannel net + Calico netstefnur)
  • Cilium 1.8.2
  • Flanell 0.12.0
  • Nýjasti Kube-beini (2020–08–25)
  • WeaveNet 2.7.0

Stillir MTU fyrir CNI

Fyrst af öllu athugum við áhrif sjálfvirkrar MTU uppgötvunar á TCP árangur:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

Áhrif MTU á TCP árangur

Enn stærra bil er að finna þegar UDP er notað:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)
Áhrif MTU á UDP árangur

Í ljósi þess að MIKLU árangursáhrifin sem komu fram í prófunum, viljum við senda vonarbréf til allra CNI viðhaldsaðila: vinsamlegast bættu sjálfvirkri MTU uppgötvun við CNI. Þú bjargar kettlingum, einhyrningum og jafnvel þeim sætasta: litla Devop.

Hins vegar, ef þú þarft að nota CNI án stuðnings fyrir sjálfvirka MTU uppgötvun, geturðu stillt það handvirkt til að fá frammistöðu. Athugið að þetta á við um Calico, Canal og WeaveNet.

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)
Lítil beiðni mín til meðfylgjandi CNIs...

CNI prófun: hrá gögn

Í þessum hluta munum við bera saman CNI við rétta MTU (ákvarðað sjálfkrafa eða stillt handvirkt). Meginmarkmiðið hér er að sýna hrá gögnin í línuritum.

Litasagan:

  • grátt - sýni (þ.e. ber járn)
  • grænn - bandbreidd yfir 9500 Mbps
  • gulur - bandbreidd yfir 9000 Mbps
  • appelsínugult - bandbreidd yfir 8000 Mbps
  • rauður - bandbreidd undir 8000 Mbps
  • blár - hlutlaus (ekki tengdur bandbreidd)

Auðlindanotkun án hleðslu

Fyrst af öllu, athugaðu auðlindanotkun þegar þyrpingin er „sofandi“.

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)
Auðlindanotkun án hleðslu

Pod-to-Pod

Þessi atburðarás gerir ráð fyrir að biðlara Pod tengist beint við netþjón Pod með því að nota IP tölu þess.

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)
Pod-to-Pod atburðarás

TCP

Pod-to-Pod TCP niðurstöður og samsvarandi auðlindanotkun:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

UDP

Pod-to-Pod UDP niðurstöður og samsvarandi auðlindanotkun:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

Pod-to-Service

Þessi hluti er viðeigandi fyrir raunveruleg notkunartilvik, viðskiptavinur Pod tengist netþjóninum Pod í gegnum ClusterIP þjónustuna.

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)
Pod-to-Service Script

TCP

Pod-to-Service TCP niðurstöður og samsvarandi auðlindanotkun:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

UDP

Niðurstöður Pod-to-Service UDP og samsvarandi auðlindanotkun:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

Stuðningur við netstefnu

Af öllu ofangreindu er flannel sá eini sem styður ekki stjórnmál. Allir aðrir innleiða netstefnur á réttan hátt, þar á meðal á heimleið og útleið. Frábært starf!

CNI dulkóðun

Meðal athugaðra CNI eru þeir sem geta dulkóðað netskipti á milli pods:

  • Antrea notar IPsec
  • Calico með vírvörn
  • Cilium með IPsec
  • WeaveNet með IPsec

Afköst

Þar sem það eru færri CNI eftir, skulum við setja allar aðstæður í eitt línurit:

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

Auðlindanotkun

Í þessum hluta munum við meta tilföngin sem notuð eru við vinnslu Pod-to-Pod samskipta í TCP og UDP. Það þýðir ekkert að teikna Pod-to-Service línurit þar sem það veitir ekki frekari upplýsingar.

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

Að setja þetta allt saman

Við skulum reyna að endurtaka öll línuritin, við kynntum smá huglægni hér og skiptum út raunverulegum gildum fyrir orðin „vwry fast“, „low“ o.s.frv.

CNI árangursmat fyrir Kubernetes yfir 10G net (ágúst 2020)

Niðurstaða og mínar niðurstöður

Þetta er svolítið huglægt, þar sem ég er að koma á framfæri minni eigin túlkun á niðurstöðunum.

Ég er ánægður með að ný CNIs birtust, Antrea stóð sig vel, margar aðgerðir voru innleiddar jafnvel í fyrstu útgáfum: sjálfvirk MTU uppgötvun, dulkóðun og auðveld uppsetning.

Ef við berum saman frammistöðu virka öll CNI vel, nema Kube-OVN og Kube-Router. Kube-Router gat heldur ekki greint MTU, ég fann ekki leið til að stilla það neins staðar í skjölunum (hér beiðni um þetta efni er opin).

Hvað varðar auðlindanotkun notar Cilium enn meira vinnsluminni en aðrir, en framleiðandinn miðar greinilega við stóra klasa, sem er greinilega ekki það sama og próf á þriggja hnúta klasa. Kube-OVN eyðir einnig miklu af örgjörva og vinnsluminni, en það er ungt CNI byggt á Open vSwitch (eins og Antrea, það virkar betur og með minni neyslu).

Allir nema Flannel eru með netstefnur. Það er mjög líklegt að hann muni aldrei styðja þá, þar sem markmiðið er einfaldara en gufuð rófa: því léttara, því betra.

Einnig, meðal annars, er dulkóðunarframmistaðan ótrúleg. Calico er eitt af elstu CNI, en dulkóðun var aðeins bætt við fyrir nokkrum vikum síðan. Þeir völdu wireguard í stað IPsec, og einfaldlega sagt, það virkar frábært og ótrúlegt, myrkjar algjörlega aðra CNI í þessum hluta prófunarinnar. Auðvitað eykst auðlindanotkun vegna dulkóðunar, en afköst sem næst er þess virði (Calico sýndi sexfalda framför í dulkóðunarprófinu samanborið við Cilium, sem er í öðru sæti). Þar að auki geturðu virkjað wireguard hvenær sem er eftir að þú hefur sent Calico í þyrpinguna og þú getur líka slökkt á henni í stuttan tíma eða varanlega ef þú vilt. Það er samt ótrúlega þægilegt! Við minnum þig á að Calico greinir ekki MTU sjálfkrafa eins og er (þessi eiginleiki er fyrirhugaður fyrir framtíðarútgáfur), svo vertu viss um að stilla MTU ef netið þitt styður Jumbo Frames (MTU 9000).

Athugaðu meðal annars að Cilium getur dulkóðað umferð á milli klasahnúta (og ekki bara milli pods), sem getur verið mjög mikilvægt fyrir opinbera klasahnúta.

Sem niðurstaða legg ég til eftirfarandi notkunartilvik:

  • Þarf CNI fyrir mjög lítinn klasa EÐA ég þarf ekki öryggi: vinna með Flannel, léttasta og stöðugasta CNI (hann er líka einn af þeim elstu, samkvæmt goðsögninni var hann fundinn upp af Homo Kubernautus eða Homo Contaitorus). Þú gætir líka haft áhuga á sniðugasta verkefninu k3s, athugaðu!
  • Þarftu CNI fyrir venjulegan klasa: Calico - þitt val, en ekki gleyma að stilla MTU ef þörf krefur. Þú getur auðveldlega og náttúrulega spilað með netstefnur, kveikt og slökkt á dulkóðun o.s.frv.
  • Þarftu CNI fyrir (mjög) stóran þyrping: Jæja, prófið sýnir ekki hegðun stórra klasa, ég myndi gjarnan gera prófanir, en við erum ekki með hundruð netþjóna með 10Gbps tengingu. Svo besti kosturinn er að keyra breytt próf á hnútunum þínum, að minnsta kosti með Calico og Cilium.

Heimild: www.habr.com

Bæta við athugasemd