Å is ir mans atjauninÄjums
PirmkÄrt, es vÄlos pateikties Cilium komandai: puiÅ”i man palÄ«dzÄja pÄrbaudÄ«t un labot metrikas uzraudzÄ«bas skriptus.
Kas ir mainījies kopŔ 2018. gada novembra
LÅ«k, kas kopÅ” tÄ laika ir mainÄ«jies (ja jÅ«s interesÄ):
Flanelis joprojÄm ir ÄtrÄkais un vienkÄrÅ”Äkais CNI interfeiss, taÄu joprojÄm neatbalsta tÄ«kla politikas un Å”ifrÄÅ”anu.
Romana vairs netiek atbalstÄ«ta, tÄpÄc esam to noÅÄmuÅ”i no etalona.
WeaveNet tagad atbalsta tÄ«kla politikas Ingress un Egress! Bet produktivitÄte ir samazinÄjusies.
ProgrammÄ Calico jums joprojÄm ir manuÄli jÄkonfigurÄ maksimÄlais pakeÅ”u lielums (MTU), lai nodroÅ”inÄtu vislabÄko veiktspÄju. Calico piedÄvÄ divas CNI instalÄÅ”anas iespÄjas, lai jÅ«s varÄtu iztikt bez atseviŔķa ETCD repozitorija:
- saglabÄjot stÄvokli Kubernetes API kÄ datu krÄtuvi (klastera izmÄrs < 50 mezgli);
- saglabÄjot stÄvokli Kubernetes API kÄ datu krÄtuvi ar Typha starpniekserveri, lai atvieglotu K8S API slodzi (klastera izmÄrs > 50 mezgli).
Calico paziÅoja par atbalstu
Cilium tagad atbalsta Å”ifrÄÅ”anu! Cilium nodroÅ”ina Å”ifrÄÅ”anu ar IPSec tuneļiem un piedÄvÄ alternatÄ«vu Å”ifrÄtajam WeaveNet tÄ«klam. Bet WeaveNet ir ÄtrÄks par Cilium ar iespÄjotu Å”ifrÄÅ”anu.
Pateicoties iebÅ«vÄtajam ETCD operatoram, Cilium tagad ir vieglÄk izvietot.
Cilium komanda ir mÄÄ£inÄjusi nedaudz samazinÄt CNI svaru, samazinot atmiÅas patÄriÅu un CPU izmaksas, taÄu tÄs konkurenti joprojÄm ir vieglÄki.
Etalona konteksts
Etalons tiek palaists trÄ«s nevirtualizÄtos Supermicro serveros ar 10 Gb Supermicro slÄdzi. Serveri ir tieÅ”i savienoti ar slÄdzi, izmantojot pasÄ«vos DAC SFP+ kabeļus, un ir konfigurÄti tajÄ paÅ”Ä VLAN ar lielajiem rÄmjiem (MTU 9000).
Kubernetes 1.14.0 instalÄta Ubuntu 18.04 LTS ar Docker 18.09.2 (noklusÄjuma Docker versija Å”ajÄ laidienÄ).
Lai uzlabotu reproducÄjamÄ«bu, mÄs nolÄmÄm vienmÄr konfigurÄt galveno mezglu pirmajÄ mezglÄ, novietot etalona servera daļu otrajÄ serverÄ« un klienta daļu treÅ”ajÄ. Lai to izdarÄ«tu, Kubernetes izvietojumos izmantojam NodeSelector.
MÄs aprakstÄ«sim etalona rezultÄtus Å”ÄdÄ mÄrogÄ:
CNI atlase etalonam
Šis ir etalons tikai CNI no sadaļas saraksta
MÄs salÄ«dzinÄsim Å”Ädus CNI:
- Calico v3.6
- Canal v3.6 (bÅ«tÄ«bÄ Flannel tÄ«kla izveidei + Calico kÄ ugunsmÅ«ris)
- Cilium 1.4.2
- Flanelis 0.11.0
- Kube-marÅ”rutÄtÄjs 0.2.5
- WeaveNet 2.5.1
UzstÄdÄ«Å”ana
Jo vieglÄk ir uzstÄdÄ«t CNI, jo labÄks bÅ«s mÅ«su pirmais iespaids. Visus CNI no etalona ir ļoti viegli instalÄt (ar vienu vai divÄm komandÄm).
KÄ jau teicÄm, serveri un slÄdzis ir konfigurÄti ar iespÄjotiem lielajiem rÄmjiem (mÄs iestatÄ«jÄm MTU uz 9000). MÄs bÅ«tu priecÄ«gi, ja CNI automÄtiski noteiktu MTU, pamatojoties uz adapteru konfigurÄciju. TomÄr tas izdevÄs tikai Cilium un Flanel. PÄrÄjiem CNI ir GitHub pieprasÄ«jumi pievienot automÄtisku MTU atklÄÅ”anu, taÄu mÄs to konfigurÄsim manuÄli, mainot ConfigMap for Calico, Canal un Kube-router vai nododot WeaveNet vides mainÄ«go.
KÄda ir problÄma ar nepareizu MTU? Å Ä« diagramma parÄda atŔķirÄ«bu starp WeaveNet ar noklusÄjuma MTU un iespÄjotiem lielajiem rÄmjiem:
KÄ MTU ietekmÄ caurlaidspÄju?
MÄs esam redzÄjuÅ”i, cik MTU ir svarÄ«ga veiktspÄjai, tagad redzÄsim, kÄ mÅ«su CNI to automÄtiski nosaka:
DiagrammÄ redzams, ka optimÄlai veiktspÄjai ir jÄkonfigurÄ MTU Calico, Canal, Kube-router un WeaveNet. Cilium un Flanel varÄja pareizi noteikt MTU paÅ”i bez jebkÄdiem iestatÄ«jumiem.
DroŔība
MÄs salÄ«dzinÄsim CNI droŔību divos aspektos: spÄja Å”ifrÄt pÄrsÅ«tÄ«tos datus un Kubernetes tÄ«kla politiku ievieÅ”ana (pamatojoties uz reÄliem testiem, nevis dokumentÄciju).
Tikai divi CNI Å”ifrÄ datus: Cilium un WeaveNet. Å ifrÄÅ”ana WeaveNet iespÄjots, iestatot Å”ifrÄÅ”anas paroli kÄ CNI vides mainÄ«go. IN
RunÄjot par tÄ«kla politikas ievieÅ”anu, viÅiem tas ir izdevies Calico, Canal, Cilium un WeaveNet, kurÄ varat konfigurÄt ieejas un izejas noteikumus. PriekÅ” Kube marÅ”rutÄtÄjs ir noteikumi tikai Ingress, un Flaneļa TÄ«kla politiku vispÄr nav.
Å eit ir kopÄjie rezultÄti:
DroŔības veiktspÄjas etalona rezultÄti
ŠŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŃŠµŠ»ŃŠ½Š¾ŃŃŃ
Å is etalons parÄda vidÄjo caurlaidspÄju vismaz trÄ«s katra testa braucienos. MÄs pÄrbaudÄm TCP un UDP (izmantojot iperf3), reÄlu lietojumprogrammu, piemÄram, HTTP (ar Nginx un curl) vai FTP (ar vsftpd un curl) veiktspÄju un, visbeidzot, lietojumprogrammu veiktspÄju, izmantojot SCP Å”ifrÄÅ”anu (izmantojot klientu un serveri OpenSSH).
Visiem testiem mÄs veicÄm tukÅ”a metÄla etalonu (zaÄ¼Ä lÄ«nija), lai salÄ«dzinÄtu CNI veiktspÄju ar vietÄjÄ tÄ«kla veiktspÄju. Å eit mÄs izmantojam to paÅ”u mÄrogu, bet krÄsÄ:
- Dzeltens = ļoti labi
- Oranžs = labs
- Zils = tik-tÄ
- Sarkans = slikti
MÄs neuzÅemsim nepareizi konfigurÄtus CNI un rÄdÄ«sim tikai rezultÄtus CNI ar pareizo MTU. (PiezÄ«me: Cilium neaprÄÄ·ina pareizi MTU, ja iespÄjojat Å”ifrÄÅ”anu, tÄpÄc jums bÅ«s manuÄli jÄsamazina MTU lÄ«dz 8900 versijÄ 1.4. NÄkamÄ versija 1.5 to dara automÄtiski.)
LÅ«k, rezultÄti:
Visi CNI TCP etalonÄ darbojÄs labi. CNI ar Å”ifrÄÅ”anu ievÄrojami atpaliek, jo Å”ifrÄÅ”ana ir dÄrga.
ArÄ« Å”eit visiem CNI klÄjas labi. CNI ar Å”ifrÄÅ”anu uzrÄdÄ«ja gandrÄ«z tÄdu paÅ”u rezultÄtu. Cilium nedaudz atpaliek no konkurentiem, taÄu tajÄ ir tikai 2,3% tukÅ”Ä metÄla, tÄpÄc tas nav slikts rezultÄts. Neaizmirstiet, ka tikai Cilium un Flanel paÅ”i pareizi noteica MTU, un tie ir viÅu rezultÄti bez papildu konfigurÄcijas.
KÄ ar reÄlu pieteikumu? KÄ redzat, HTTP kopÄjÄ veiktspÄja ir nedaudz zemÄka nekÄ TCP. Pat ja izmantojat HTTP ar TCP, mÄs konfigurÄjÄm iperf3 TCP etalonÄ, lai izvairÄ«tos no lÄnas palaiÅ”anas, kas ietekmÄtu HTTP etalonu. Å eit visi labi pastrÄdÄja. Kube marÅ”rutÄtÄjam ir nepÄrprotamas priekÅ”rocÄ«bas, taÄu WeaveNet nedarbojÄs labi: aptuveni par 20% sliktÄk nekÄ tukÅ”am metÄlam. Cilium un WeaveNet ar Å”ifrÄÅ”anu izskatÄs patieÅ”Äm skumji.
Izmantojot FTP, citu uz TCP balstÄ«tu protokolu, rezultÄti atŔķiras. Flanelis un Kube-router paveic Å”o darbu, bet Calico, Canal un Cilium nedaudz atpaliek un ir aptuveni 10% lÄnÄki nekÄ tukÅ”s metÄls. WeaveNet atpaliek pat par 17%, bet Å”ifrÄtais WeaveNet apsteidz Å”ifrÄto Cilium par 40%.
Izmantojot SCP, mÄs uzreiz varam redzÄt, cik SSH Å”ifrÄÅ”ana mums maksÄ. GandrÄ«z visiem CNI klÄjas labi, taÄu WeaveNet atkal atpaliek. Paredzams, ka Cilium un WeaveNet ar Å”ifrÄÅ”anu ir vissliktÄkie dubultÄs Å”ifrÄÅ”anas (SSH + CNI) dÄļ.
Å eit ir kopsavilkuma tabula ar rezultÄtiem:
Resursu patÄriÅÅ”
Tagad salÄ«dzinÄsim, kÄ CNI patÄrÄ resursus pie lielas slodzes (TCP pÄrsÅ«tÄ«Å”anas laikÄ, 10 Gbps). VeiktspÄjas testos mÄs salÄ«dzinÄm CNI ar tukÅ”u metÄlu (zaļa lÄ«nija). Resursu patÄriÅam parÄdÄ«sim tÄ«ru Kubernetes (violeta lÄ«nija) bez CNI un paskatÄ«simies, cik papildu resursus patÄrÄ CNI.
SÄksim ar atmiÅu. Å eit ir norÄdÄ«ta mezglu RAM vidÄjÄ vÄrtÄ«ba (izÅemot buferus un keÅ”atmiÅu) MB pÄrsÅ«tÄ«Å”anas laikÄ.
Flanelis un Kube-router uzrÄdÄ«ja lieliskus rezultÄtus - tikai 50 MB. Calico un Canal katram ir 70. WeaveNet nepÄrprotami patÄrÄ vairÄk nekÄ citi - 130 MB, un Cilium izmanto pat 400.
Tagad pÄrbaudÄ«sim CPU laika patÄriÅu. IevÄrÄ«bas cienÄ«gs: diagrammÄ parÄdÄ«ti nevis procenti, bet ppm, tas ir, 38 ppm ābez dzelzsā ir 3,8%. LÅ«k, rezultÄti:
Calico, Canal, Flannel un Kube-router ir ļoti efektÄ«vas CPU - tikai par 2% vairÄk nekÄ Kubernetes bez CNI. WeaveNet ievÄrojami atpaliek ar papildu 5%, kam seko Cilium ar 7%.
Å eit ir resursu patÄriÅa kopsavilkums:
RezultÄti
Tabula ar visiem rezultÄtiem:
VispÄrÄ«gie etalona rezultÄti
SecinÄjums
PÄdÄjÄ daÄ¼Ä izteikÅ”u savu subjektÄ«vo viedokli par rezultÄtiem. Atcerieties, ka Å”is etalons pÄrbauda tikai viena savienojuma caurlaidspÄju ļoti mazÄ klasterÄ« (3 mezgli). Tas neattiecas uz lielÄm kopÄm (<50 mezgliem) vai paralÄliem savienojumiem.
AtkarÄ«bÄ no scenÄrija es iesaku izmantot Å”Ädus CNI:
- Vai jums ir jÅ«su klasterÄ« mezgli ar maz resursiem (vairÄki GB RAM, vairÄki kodoli), un jums nav nepiecieÅ”ami droŔības lÄ«dzekļi - izvÄlieties Flaneļa. Å is ir viens no visrentablÄkajiem CNI. Un tas ir savietojams ar visdažÄdÄkajÄm arhitektÅ«rÄm (amd64, arm, arm64 utt.). TurklÄt Å”is ir viens no diviem (otrs ir Cilium) CNI, kas var automÄtiski noteikt MTU, tÄpÄc jums nekas nav jÄkonfigurÄ. Ir piemÄrots arÄ« Kube marÅ”rutÄtÄjs, taÄu tas nav standarta, un jums bÅ«s manuÄli jÄkonfigurÄ MTU.
- Ja nepiecieÅ”ams Å”ifrÄt tÄ«klu droŔības labad Åem WeaveNet. Neaizmirstiet norÄdÄ«t MTU lielumu, ja izmantojat lielos rÄmjus, un iespÄjojiet Å”ifrÄÅ”anu, norÄdot paroli, izmantojot vides mainÄ«go. Bet labÄk aizmirst par veiktspÄju ā tÄs ir Å”ifrÄÅ”anas izmaksas.
- Par normÄla lietoÅ”ana padomu Calico. Å is CNI tiek plaÅ”i izmantots dažÄdos Kubernetes izvietoÅ”anas rÄ«kos (Kops, Kubespray, Rancher utt.). TÄpat kÄ ar WeaveNet, noteikti konfigurÄjiet MTU programmÄ ConfigMap, ja izmantojat lielos rÄmjus. Tas ir daudzfunkcionÄls rÄ«ks, kas ir efektÄ«vs resursu patÄriÅa, veiktspÄjas un droŔības ziÅÄ.
Un visbeidzot iesaku sekot lÄ«dzi attÄ«stÄ«bai ciliums. Å im CNI ir ļoti aktÄ«va komanda, kas daudz strÄdÄ pie sava produkta (funkcijas, resursu taupÄ«Å”ana, veiktspÄja, droŔība, klasteru veidoÅ”ana...), un viÅiem ir ļoti interesanti plÄni.
VizuÄla diagramma CNI izvÄlei
Avots: www.habr.com