CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

TL; DR: Visi CNI darbojas tā, kā vajadzētu, izņemot Kube-Router un Kube-OVN, Calico, izņemot automātisko MTU noteikÅ”anu, ir vislabākais.

Raksta atjauninājums par manām iepriekŔējām pārbaudēm (2018 Šø 2019), testÄ“Å”anas laikā es izmantoju Kubernetes 1.19 uz Ubuntu 18.04 ar atjauninātiem CNI no 2020. gada augusta.

Pirms ienirt metrikā...

Kas jauns kopÅ” 2019. gada aprīļa?

  • Var pārbaudÄ«t savā klasterÄ«: varat palaist testus savā klasterÄ«, izmantojot mÅ«su rÄ«ku Kubernetes tÄ«kla etalons: knb
  • Ir parādÄ«juÅ”ies jauni dalÄ«bnieki
  • Jauni scenāriji: paÅ”reizējās pārbaudes veic "Pod-to-Pod" tÄ«kla veiktspējas testus, un ir pievienots jauns skripts "Pod-to-Service", kas veic testus tuvāk reālajiem apstākļiem. Praksē jÅ«su Pod ar API darbojas ar bāzi kā pakalpojumu, nevis caur Pod IP adresi (protams, mēs pārbaudām gan TCP, gan UDP abiem scenārijiem).
  • Resursu patēriņŔ: katram testam tagad ir savs resursu salÄ«dzinājums
  • Lietojumprogrammu testu noņemÅ”ana: mēs vairs neveicam HTTP, FTP un SCP testus, jo mÅ«su auglÄ«gā sadarbÄ«ba ar kopienu un CNI uzturētājiem ir atklājusi plaisu starp iperf rezultātiem salÄ«dzinājumā ar TCP un curl rezultātiem CNI palaiÅ”anas aizkavÄ“Å”anās dēļ (pirmās Pod sekundes). startÄ“Å”ana, kas reālos apstākļos nav raksturÄ«ga).
  • Atvērtais avots: ir pieejami visi testa avoti (skripti, yml iestatÄ«jumi un sākotnējie ā€œneapstrādātieā€ dati). Å”eit

Atsauces testa protokols

Protokols ir detalizēti aprakstÄ«ts Å”eitLÅ«dzu, ņemiet vērā, ka Å”is raksts ir par Ubuntu 18.04 ar noklusējuma kodolu.

CNI izvēle novērtÄ“Å”anai

Šīs pārbaudes mērķis ir salīdzināt CNI, kas konfigurēti ar vienu yaml failu (tāpēc tiek izslēgti visi tie, kas instalēti ar skriptiem, piemēram, VPP un citi).

MÅ«su izvēlētie CNI salÄ«dzināŔanai:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flaneļa tÄ«kls + Calico tÄ«kla politikas)
  • Cilium 1.8.2
  • Flanelis 0.12.0
  • Kube-router jaunākais (2020-08-25)
  • WeaveNet 2.7.0

MTU konfigurēŔana CNI

Pirmkārt, mēs pārbaudām automātiskās MTU noteikÅ”anas ietekmi uz TCP veiktspēju:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

MTU ietekme uz TCP veiktspēju

Izmantojot UDP, tiek konstatēta vēl lielāka atŔķirÄ«ba:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)
MTU ietekme uz UDP veiktspēju

Ņemot vērā pārbaudēs atklāto milzÄ«go veiktspējas ietekmi, mēs vēlamies nosÅ«tÄ«t cerÄ«bas vēstuli visiem CNI uzturētājiem: lÅ«dzu, pievienojiet CNI automātisko MTU noteikÅ”anu. JÅ«s izglābsit kaķēnus, vienradžus un pat visskaistāko: mazo Devopu.

Tomēr, ja jums ir nepiecieÅ”ams izmantot CNI bez atbalsta automātiskai MTU noteikÅ”anai, varat to konfigurēt manuāli, lai iegÅ«tu veiktspēju. LÅ«dzu, ņemiet vērā, ka tas attiecas uz Calico, Canal un WeaveNet.

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)
Mans mazais lūgums pievienotajiem CNI...

CNI testÄ“Å”ana: neapstrādāti dati

Å ajā sadaļā mēs salÄ«dzināsim CNI ar pareizo MTU (noteikts automātiski vai iestatÄ«ts manuāli). Galvenais mērÄ·is Å”eit ir parādÄ«t neapstrādātos datus grafikos.

Krāsu leģenda:

  • pelēks ā€” paraugs (t.i., tukÅ”s dzelzs)
  • zaļŔ - joslas platums virs 9500 Mbps
  • dzeltens - joslas platums virs 9000 Mbps
  • oranžs ā€” joslas platums virs 8000 Mb/s
  • sarkans - joslas platums zem 8000 Mbps
  • zils ā€” neitrāls (nav saistÄ«ts ar joslas platumu)

Resursu patēriņŔ bez slodzes

Pirmkārt, pārbaudiet resursu patēriņu, kad klasteris "guļ".

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)
Resursu patēriņŔ bez slodzes

Pod-to-Pod

Å ajā scenārijā tiek pieņemts, ka klienta Pod izveido tieÅ”i savienojumu ar servera Pod, izmantojot tā IP adresi.

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)
Pod-to-Pod scenārijs

TCP

Pod-to-Pod TCP rezultāti un atbilstoÅ”ais resursu patēriņŔ:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

UDP

Pod-to-Pod UDP rezultāti un atbilstoÅ”ais resursu patēriņŔ:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

Pod-to-Service

Šī sadaļa attiecas uz reāliem lietoŔanas gadījumiem, klienta Pod savienojas ar serveri Pod, izmantojot pakalpojumu ClusterIP.

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)
Pod-to-Service skripts

TCP

Pod-to-Service TCP rezultāti un atbilstoÅ”ais resursu patēriņŔ:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

UDP

Pod-to-Service UDP rezultāti un atbilstoÅ”ais resursu patēriņŔ:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

TÄ«kla politikas atbalsts

Starp visiem iepriekÅ” minētajiem vienÄ«gais, kas neatbalsta politiku, ir Flanelis. Visas pārējās pareizi ievieÅ” tÄ«kla politikas, tostarp ienākoÅ”o un izejoÅ”o. Lielisks darbs!

CNI ŔifrēŔana

Starp pārbaudÄ«tajiem CNI ir tādi, kas var Å”ifrēt tÄ«kla apmaiņu starp podiem:

  • Antrea, izmantojot IPsec
  • Calico, izmantojot stiepļu aizsargu
  • Cilium, izmantojot IPsec
  • WeaveNet, izmantojot IPsec

Joslas platums

Tā kā CNI ir palicis mazāk, saliksim visus scenārijus vienā diagrammā:

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

Resursu patēriņŔ

Šajā sadaļā mēs novērtēsim resursus, kas tiek izmantoti, apstrādājot Pod-to-Pod saziņu TCP un UDP. Nav jēgas zīmēt Pod-to-Service grafiku, jo tas nesniedz papildu informāciju.

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

Saliekot to visu kopā

Mēģināsim atkārtot visus grafikus, mēs Å”eit ieviesām nelielu subjektivitāti, aizstājot faktiskās vērtÄ«bas ar vārdiem ā€œvwry fastā€, ā€œlowā€ utt.

CNI veiktspējas novērtējums Kubernetes 10G tÄ«klā (2020. gada augusts)

Secinājums un mani secinājumi

Tas ir nedaudz subjektīvi, jo es sniedzu savu rezultātu interpretāciju.

Priecājos, ka parādÄ«jās jauni CNI, Antrea darbojās labi, daudzas funkcijas tika ieviestas pat agrÄ«nās versijās: automātiska MTU noteikÅ”ana, Å”ifrÄ“Å”ana un vienkārÅ”a uzstādÄ«Å”ana.

Ja salÄ«dzinām veiktspēju, visi CNI darbojas labi, izņemot Kube-OVN un Kube-Router. Kube-Router arÄ« nevarēja noteikt MTU, es nekur dokumentācijā neatradu veidu, kā to konfigurēt (Å”eit pieprasÄ«jums par Å”o tēmu ir atvērts).

Resursu patēriņa ziņā Cilium joprojām izmanto vairāk RAM nekā citi, taču ražotājs nepārprotami ir vērsts uz lieliem klasteriem, kas acīmredzami nav tas pats, kas tests trīs mezglu klasterī. Kube-OVN arī patērē daudz CPU un RAM resursu, taču tas ir jauns CNI, kura pamatā ir Open vSwitch (tāpat kā Antrea, tas darbojas labāk un patērē mazāk).

Visiem, izņemot Flanel, ir tÄ«kla politikas. Ä»oti iespējams, ka viņŔ tos nekad neatbalstÄ«s, jo mērÄ·is ir vienkārŔāks par tvaicētu rāceņu: jo vieglāks, jo labāk.

Turklāt, cita starpā, Å”ifrÄ“Å”anas veiktspēja ir pārsteidzoÅ”a. Calico ir viens no vecākajiem CNI, taču Å”ifrÄ“Å”ana tika pievienota tikai pirms pāris nedēļām. Viņi izvēlējās vadu aizsargu, nevis IPsec, un, vienkārÅ”i sakot, tas darbojas lieliski un pārsteidzoÅ”i, pilnÄ«bā aizēnot citus CNI Å”ajā testÄ“Å”anas daļā. Protams, resursu patēriņŔ palielinās Å”ifrÄ“Å”anas dēļ, taču sasniegtā caurlaidspēja ir tā vērta (Calico uzrādÄ«ja seÅ”kārtÄ«gu uzlabojumu Å”ifrÄ“Å”anas testā, salÄ«dzinot ar Cilium, kas ieņem otro vietu). Turklāt jÅ«s varat iespējot vadu aizsargu jebkurā laikā pēc Calico izvietoÅ”anas klasterÄ«, kā arÄ« varat to atspējot uz Ä«su laiku vai pastāvÄ«gi, ja vēlaties. Tomēr tas ir neticami ērti! Atgādinām, ka Calico paÅ”laik automātiski nenosaka MTU (Ŕī funkcija ir plānota nākamajās versijās), tāpēc noteikti konfigurējiet MTU, ja jÅ«su tÄ«kls atbalsta Jumbo Frames (MTU 9000).

Cita starpā ņemiet vērā, ka Cilium var Å”ifrēt trafiku starp klasteru mezgliem (un ne tikai starp podiem), kas var bÅ«t ļoti svarÄ«gi publiskajiem klasteru mezgliem.

Nobeigumā es iesaku Ŕādus lietoŔanas gadījumus:

  • NepiecieÅ”ams CNI ļoti mazam klasterim VAI man nav vajadzÄ«ga droŔība: strādā ar Flaneļa, vieglākais un stabilākais CNI (viņŔ ir arÄ« viens no vecākajiem, pēc leÄ£endas viņu izgudrojis Homo Kubernautus jeb Homo Contaitorus). Iespējams, jÅ«s interesēs arÄ« Ä£eniālākais projekts k3, pārbaudiet!
  • NepiecieÅ”ams CNI parastam klasterim: Calico - jÅ«su izvēle, bet neaizmirstiet konfigurēt MTU, ja nepiecieÅ”ams. Varat viegli un dabiski spēlēt ar tÄ«kla politikām, ieslēgt un izslēgt Å”ifrÄ“Å”anu utt.
  • NepiecieÅ”ams CNI (ļoti) liela mēroga klasterim: Nu, tests neuzrāda lielu klasteru uzvedÄ«bu, es labprāt veiktu testus, bet mums nav simtiem serveru ar 10 Gbps savienojumu. Tāpēc labākais risinājums ir palaist modificētu pārbaudi saviem mezgliem, vismaz ar Calico un Cilium.

Avots: www.habr.com

Pievieno komentāru