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
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).
PirmkÄrt, mÄs pÄrbaudÄm automÄtiskÄs MTU noteikÅ”anas ietekmi uz TCP veiktspÄju:
MTU ietekme uz TCP veiktspÄju
Izmantojot UDP, tiek konstatÄta vÄl lielÄka atŔķirÄ«ba:
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.
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ļ".
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.
Pod-to-Pod scenÄrijs
TCP
Pod-to-Pod TCP rezultÄti un atbilstoÅ”ais resursu patÄriÅÅ”:
UDP
Pod-to-Pod UDP rezultÄti un atbilstoÅ”ais resursu patÄriÅÅ”:
Pod-to-Service
Å Ä« sadaļa attiecas uz reÄliem lietoÅ”anas gadÄ«jumiem, klienta Pod savienojas ar serveri Pod, izmantojot pakalpojumu ClusterIP.
Pod-to-Service skripts
TCP
Pod-to-Service TCP rezultÄti un atbilstoÅ”ais resursu patÄriÅÅ”:
UDP
Pod-to-Service UDP rezultÄti un atbilstoÅ”ais resursu patÄriÅÅ”:
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Ä:
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.
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.
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.