Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
Ev nûvekirina min e pîvana berê, ku naha li Kubernetes 1.14-ê bi guhertoya herî dawî ya CNI-yê ji Nîsana 2019-an ve dimeşe.

Berî her tiştî, ez dixwazim spasiya tîmê Cilium bikim: xortan ji min re bûn alîkar ku skrîptên çavdêriya metrîkan kontrol û rast bikim.

Ji Mijdara 2018-an vir ve çi guherî

Li vir çi ye ku ji hingê ve hatî guhertin (heke hûn eleqedar in):

Flannel pêwendiya CNI ya bilez û hêsan dimîne, lê dîsa jî polîtîkayên torê û şîfrekirinê piştgirî nake.

Romana êdî nayê piştgirî kirin, ji ber vê yekê me ew ji pîvanê derxist.

WeaveNet naha ji bo Ingress û Egress polîtîkayên torê piştgirî dike! Lê hilberîn kêm bûye.

Di Calico de, hûn hîn jî hewce ne ku ji bo performansa çêtirîn mezinahiya pakêtê ya herî zêde (MTU) bi destan mîheng bikin. Calico ji bo sazkirina CNI du vebijarkan pêşkêşî dike, ji ber vê yekê hûn dikarin bêyî depoyek ETCD-ê veqetînin:

  • rewsa hilanîn di Kubernetes API de wekî dikana daneyê (mezinahiya komê < 50 nod);
  • rewşa hilanîn di Kubernetes API-yê de wekî dikanek daneyê ya bi proxy Typha re da ku barkirina li ser K8S API (mezinahiya komê > 50 nod) hilîne.

Calico piştgirî ragihand polîtîkayên asta sepanê li ser Istio ji bo ewlehiya asta serîlêdanê.

Ciliium niha şîfrekirinê piştgirî dike! Cilium bi tunelên IPSec re şîfrekirinê peyda dike û ji tora WeaveNet-a şîfrekirî re alternatîfek pêşkêşî dike. Lê WeaveNet bi şîfrekirina çalakkirî ji Cilium zûtir e.

Bi saya operatorê ETCD-ê ya çêkirî, Ciliium nuha hêsantir e ku were bicîh kirin.

Tîma Ciliium hewl da ku bi kêmkirina xerckirina bîranînê û lêçûnên CPU-yê hin giraniya CNI-ya xwe kêm bike, lê hevrikên wê hîn jî siviktir in.

Çarçoveya pîvanê

Pîvan li ser sê pêşkêşkerên Supermicro yên ne-virtualkirî bi guhezek Supermicro ya 10 Gb tê xebitandin. Pêşkêşker rasterast bi kabloyên DAC SFP+ yên pasîf bi veguheztinê ve têne girêdan û li ser heman VLAN-ê bi çarçoveyên jumbo (MTU 9000) têne mîheng kirin.

Kubernetes 1.14.0 li Ubuntu 18.04 LTS bi Docker 18.09.2 ve hatî saz kirin (di vê berdanê de guhertoya xwerû ya Docker).

Ji bo baştirkirina dubarebûnê, me biryar da ku em her gav masterê li ser girêka yekem mîheng bikin, beşa serverê ya pîvanê li ser servera duyemîn, û beşa xerîdar li ya sêyemîn bi cîh bikin. Ji bo kirina vê yekê, em NodeSelector-ê di danasîna Kubernetes de bikar tînin.

Em ê encamên pîvanê li ser pîvana jêrîn diyar bikin:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Hilbijartina CNI ji bo pîvanek

Ev pîvanek tenê ji bo CNI ji navnîşa di beşê de ye li ser afirandina yek komê master bi kubeadm Belgeyên fermî yên Kubernetes bibînin. Ji 9 CNI-yan, em ê tenê 6-an bavêjin: em ê yên ku sazkirina wan dijwar e û/an bêyî veavakirinê li gorî belgeyê naxebitin (Romana, Contiv-VPP û JuniperContrail / TungstenFabric) ji holê rakin.

Em ê CNI-yên jêrîn bidin ber hev:

  • Calico v3.6
  • Canal v3.6 (bi bingehîn Flannel ji bo torê + Calico wekî dîwarê agir)
  • Kîlium 1.4.2
  • Flannel 0.11.0
  • Kube-rûter 0.2.5
  • WeaveNet 2.5.1

mîhengê

Sazkirina CNI-yê hêsantir e, dê bandora me ya yekem çêtir be. Hemî CNI-yên ji pîvanê têne sazkirin pir hêsan in (bi yek an du fermanan).

Wekî ku me got, pêşkêşker û guhêrbar bi çarçoveyên jumbo yên çalak têne mîheng kirin (me MTU li 9000 destnîşan kir). Ger CNI bixweber MTU-yê li ser bingeha veavakirina adapteran destnîşan bike, em ê kêfxweş bibin. Lêbelê, tenê Cilium û Flannel ev yek bi rê ve birin. CNI yên mayî li ser GitHub daxwaz hene ku vedîtina MTU-ya otomatîk lê zêde bikin, lê em ê bi guheztina ConfigMap-a ji bo Calico, Canal û Kube-router, an derbaskirina guhêrbarek jîngehê ji bo WeaveNet, bi destan mîheng bikin.

Pirsgirêka MTU-ya çewt çi ye? Ev diagram ferqa di navbera WeaveNet bi MTU-ya xwerû û çarçoveyên jumbo yên çalakkirî de nîşan dide:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
MTU çawa bandorê li ser hilanînê dike?

Me dît ku MTU ji bo performansê çiqas girîng e, naha em bibînin ka CNI-yên me bixweber wê çawa destnîşan dikin:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
CNI bixweber MTU destnîşan dike

Graf nîşan dide ku hûn hewce ne ku MTU ji bo Calico, Canal, Kube-router û WeaveNet ji bo performansa çêtirîn mîheng bikin. Cilium û Flannel karîbûn bêyî tu mîhengan bi xwe MTU-yê rast diyar bikin.

Ewlekariyê

Em ê ewlehiya CNI-yê di du aliyan de bidin ber hev: şiyana şîfrekirina daneyên hatine veguheztin û pêkanîna polîtîkayên tora Kubernetes (li ser bingeha ceribandinên rastîn, ne belge).

Tenê du CNI daneyan şîfre dikin: Cilium û WeaveNet. Şîfrekirin WeaveNet bi danîna şîfreya şîfrekirinê wekî guhêrbarek jîngehê CNI ve hatî çalak kirin. LI belgekirin WeaveNet wê bi rengek tevlihev diyar dike, lê her tişt bi hêsanî tê kirin. Şîfrekirin Ciliium bi fermanan ve hatî mîheng kirin, bi çêkirina sirên Kubernetes, û bi guherandina daemonSet (ji WeaveNet hinekî tevlihevtir e, lê Cilium gav bi gav heye fermanên).

Ji bo pêkanîna siyaseta torê jî bi ser ketine Calico, Canal, Cilium û WeaveNet, ku tê de hûn dikarin qaîdeyên Ingress û Egress mîheng bikin. Bo Kube-rûter in qaîdeyên bi tenê ji bo Ingress hene, û Flannel Bi tevahî polîtîkayên torê tune.

Li vir encamên giştî hene:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
Encamên Benchmark Performansa Ewlekariyê

Berhemdariyê

Ev pîvan bi kêmî ve sê rêvekirina her ceribandinê rêjeya navînî nîşan dide. Em performansa TCP û UDP (bikaranîna iperf3), serîlêdanên rastîn ên mîna HTTP (bi Nginx û curl) an FTP (bi vsftpd û curl) û di dawiyê de performansa serîlêdanê bi karanîna şîfrekirina bingeha SCP (bikaranîna xerîdar û server OpenSSH) ceribandin.

Ji bo hemî ceribandinan, me pîvanek metalek tazî (xeta kesk) pêk anî da ku performansa CNI bi performansa torê ya xwecî re berhev bike. Li vir em heman pîvanê, lê bi rengî bikar tînin:

  • Zer = pir baş
  • Orange = baş
  • Şîn = filan
  • Sor = xerab

Em ê CNI-yên çewt ên mîhengkirî negirin û dê tenê ji bo CNI-yên bi MTU-ya rast encam nîşan bidin. (Têbînî: Heke hûn şîfrekirinê çalak bikin Ciliium MTU rast hesab nake, ji ber vê yekê hûn neçar in ku di guhertoya 8900-ê de MTU-yê bi destan kêm bikin 1.4. Guhertoya din, 1.5, vê yekê bixweber dike.)

Li vir encam hene:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
Performansa TCP

Hemî CNI di pîvana TCP de baş pêk anîn. CNI bi şîfrekirinê pir li paş dimîne ji ber ku şîfrekirin biha ye.

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
performansa UDP

Li vir jî, hemî CNI baş dikin. CNI bi şîfrekirinê hema hema heman encam nîşan da. Cilium piçekî li paş pêşbaziyê ye, lê ew tenê %2,3 ji metalê tazî ye, ji ber vê yekê ew ne encamek xirab e. Ji bîr nekin ku tenê Cilium û Flannel bi xwe MTU rast destnîşan kirin, û ev encamên wan bêyî veavakirina zêde ne.

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Li ser serîlêdana rastîn çi ye? Wekî ku hûn dikarin bibînin, performansa giştî ji bo HTTP ji ya TCP hinekî kêmtir e. Tewra ku hûn HTTP-ê bi TCP-ê re bikar bînin, me iperf3 di pîvana TCP-ê de mîheng kir da ku ji destpêkek hêdî ya ku bandorê li pîvana HTTP bike nehêle. Li vir her kesî karekî baş kir. Kube-router xwedan avantajek eşkere ye, lê WeaveNet baş pêk neanî: bi qasî 20% ji metalê tazî xirabtir e. Cilium û WeaveNet bi şîfrekirinê bi rastî xemgîn xuya dikin.

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Bi FTP, protokolek din a TCP-ê, encam diguhere. Flannel û Kube-router karî dikin, lê Calico, Canal û Cilium piçekî li paş in û bi qasî 10% ji metala tazî hêdîtir in. WeaveNet bi qasî 17% li paş e, lê WeaveNeta şîfrekirî 40% li pêş Ciliuma şîfrekirî ye.

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Bi SCP re em dikarin tavilê bibînin ka şîfrekirina SSH-ê çiqas mesrefa me dike. Hema hema hemî CNI baş dibin, lê WeaveNet dîsa li paş dimîne. Ciliium û WeaveNet bi şîfrekirinê ji ber şîfrekirina ducar (SSH + CNI) ya herî xirab in.

Li vir tabloyek kurt bi encaman re heye:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Xerca çavkaniyê

Naha em werin berhev kirin ka CNI çawa çavkaniyan di bin barên giran de dixwe (di dema veguheztina TCP de, 10 Gbps). Di ceribandinên performansê de em CNI bi metala tazî (xêza kesk) re berhev dikin. Ji bo xerckirina çavkaniyê, werin em Kubernetes (xêza binefşî) bêyî CNI nîşan bidin û bibînin ku CNI çend çavkaniyên zêde dixwe.

Ka em bi bîranînê dest pê bikin. Li vir nirxa navînî ya RAM-a girêkan (ji bilî tampon û cache) di MB de di dema veguheztinê de ye.

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
Vexwarina bîranînê

Flannel û Kube-router encamên hêja nîşan dan - tenê 50 MB. Her yek Calico û Canal 70 hene. WeaveNet eşkere ji yên din bêtir dixwe - 130 MB, û Cilium bi qasî 400 bikar tîne.
Naha werin em vexwarina dema CPU-yê kontrol bikin. Balkêş: diagram ne ji sedî, lê ppm nîşan dide, ango 38 ppm ji bo "hesinê tazî" 3,8% e. Li vir encam hene:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
mezaxtina CPU

Calico, Canal, Flannel û Kube-router CPU pir bikêrhatî ne - tenê 2% bêtir ji Kubernetes bêyî CNI. WeaveNet bi 5% zêde li paş dimîne, li dû wê jî Cilium bi 7%.

Li vir kurteya xerckirina çavkaniyê ye:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)

Encam

Tabloya bi hemî encaman re:

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
Encamên pîvana giştî

encamê

Di beşa dawî de ez ê li ser encaman nêrîna xwe ya subjektîf bînim ziman. Bînin bîra xwe ku ev pîvan tenê li ser komikek pir piçûk (3 girêk) pêwendiyek yekane ceribandinê dike. Ew ji bo komên mezin (<50 girêk) an girêdanên paralel derbas nabe.

Ez pêşniyar dikim ku CNI-yên jêrîn li gorî senaryoyê bikar bînin:

  • Ma hûn di koma xwe de hene girêkên bi çend çavkaniyên (çend GB RAM, çend navok) û hûn ne hewceyê taybetmendiyên ewlehiyê ne - hilbijêrin Flannel. Ev yek ji wan CNI-yên herî bikêrhatî ye. Û ew bi cûrbecûr mîmarî re hevaheng e (amd64, arm, arm64, hwd.). Wekî din, ev yek ji du (yên din jî Cilium e) CNI ye ku dikare bixweber MTU-ê destnîşan bike, ji ber vê yekê hûn ne hewce ne ku tiştek mîheng bikin. Kube-router di heman demê de guncan e, lê ew ne wekî standard e û hûn ê hewce bikin ku MTU bi destan mîheng bikin.
  • Ger hewce be torê şîfre bike ji bo ewlehiyê, bigirin WeaveNet. Ji bîr nekin ku hûn pîvana MTU-ê diyar bikin heke hûn çarçoveyên jumbo bikar tînin, û şîfrekirinê bi destnîşankirina şîfreyek bi guhêrbarek jîngehê ve çalak bikin. Lê çêtir e ku meriv performansê ji bîr bike - ew lêçûna şîfrekirinê ye.
  • bo bikaranîna normal Pirtûk Calico. Ev CNI bi berfirehî di cûrbecûr amûrên bicîhkirina Kubernetes de tê bikar anîn (Kops, Kubespray, Rancher, hwd.). Mîna WeaveNet, ger ku hûn çarçoveyên jumbo bikar bînin pê bawer bin ku MTU-yê di ConfigMap-ê de mîheng bikin. Ew amûrek pir-fonksîyonel e ku di warê vexwarina çavkaniyê, performans û ewlehiyê de bikêr e.

Û di dawiyê de, ez ji we re şîret dikim ku pêşveçûnê bişopînin Ciliium. Ev CNI xwedan tîmek pir çalak e ku li ser hilbera wan (taybetmendî, teserûfa çavkaniyê, performans, ewlehî, komkirin...) pir dixebite û planên wan ên pir balkêş hene.

Pêveka Tora Kubernetes (CNI) Encamên Benchmarkê yên li ser Tora 10 Gbps (Nûvekirin: Avrêl 2019)
Diagrama dîtbarî ji bo hilbijartina CNI

Source: www.habr.com

Add a comment