Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

TL; DR: Hemî CNI wekî ku divê dixebitin, ji bilî Kube-Router û Kube-OVN, Calico, ji bilî tespîtkirina otomatîkî ya MTU, çêtirîn e.

Gotar-nûvekirina kontrolên min ên berê (2018 и 2019), di dema ceribandinê de ez Kubernetes 1.19-ê li Ubuntu 18.04-ê bi CNI-yên nûvekirî yên Tebaxa 2020-an bikar tînim.

Berî ku em têkevin nav metrîkan...

Ji Nîsana 2019-an vir ve çi nû ye?

  • Dikarin li ser koma xwe biceribînin: Hûn dikarin bi karanîna amûra me ceribandinan li ser koma xwe bimeşînin Benchmarka Torgiloka Kubernetes: knb
  • Endamên nû derketin
  • Senaryoyên Nû: Kontrolên heyî ceribandinên performansa torê ya "Pod-to-Pod" dimeşînin, û skrîptek nû "Pod-to-Service" hate zêdekirin ku ceribandinan nêzî şert û mercên cîhana rastîn dike. Di pratîkê de, Pod-a we ya bi API-ê bi bingehê re wekî karûbar dixebite, û ne bi navnîşana ip-ya Pod-ê (bê guman em ji bo her du senaryoyan hem TCP û hem jî UDP kontrol dikin).
  • Xerca çavkaniyê: her ceribandin nuha berhevoka xweya çavkaniya xwe heye
  • Rakirina Testên Serlêdanê: Em êdî ceribandinên HTTP, FTP û SCP nakin ji ber ku hevkariya me ya bikêr a bi civakê re û parêzgerên CNI re ji ber derengiya destpêkirina CNI (çend saniyeyên yekem ên Pod-ê) di navbera encamên iperf-ê yên li ser TCP û encamên curl de valahiyek dît. destpêk, ku di şert û mercên rastîn de ne tîpîk).
  • Çavkaniya vekirî: Hemî çavkaniyên testê (skrîpt, mîhengên yml û daneya "raw" a orîjînal) hene vir

Protokola Testa Referansê

Protokol bi berfirehî tê vegotin virJi kerema xwe not bikin ku ev gotar li ser Ubuntu 18.04 bi kernelê xwerû ye.

Hilbijartina CNI ji bo Nirxandinê

Armanca vê ceribandinê berhevkirina CNI-yên ku bi yek pelê yaml-ê ve hatine mîheng kirin (ji ber vê yekê, hemî yên ku ji hêla skrîptan ve hatine saz kirin, wekî VPP û yên din, têne derxistin).

CNIyên me yên bijartî ji bo berhevdanê:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Tora Flanel + Polîtîkayên Tora Calico)
  • Kîlium 1.8.2
  • Flannel 0.12.0
  • Kube-router herî dawî (2020–08–25)
  • WeaveNet 2.7.0

Veavakirina MTU ji bo CNI

Berî her tiştî, em bandora tespîtkirina MTU-ya otomatîkî li ser performansa TCP-ê kontrol dikin:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Bandora MTU li ser Performansa TCP

Dema ku UDP bikar bînin valahiyek hê mezintir tê dîtin:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)
Bandora MTU li ser Performansa UDP

Ji ber bandora performansa MEZIN ku di ceribandinan de hate eşkere kirin, em dixwazin nameyek hêviyê ji hemî parêzvanên CNI re bişînin: ji kerema xwe vedîtina MTU-ya otomatîkî li CNI zêde bikin. Hûn ê kittens, unicorns û hetta ya herî xweşik xilas bikin: Devopê piçûk.

Lêbelê, heke hûn hewce ne ku CNI bêyî piştgirî ji bo tespîtkirina MTU-ya otomatîkî bikar bînin, hûn dikarin wê bi destan mîheng bikin da ku performansê bistînin. Ji kerema xwe not bikin ku ev ji Calico, Canal û WeaveNet re derbas dibe.

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)
Daxwaza min a piçûk ji CNI-yên pê re ...

Testkirina CNI: Daneyên xav

Di vê beşê de, em ê CNI-yê bi MTU-ya rast (jixweber hatî destnîşankirin an bi destan ve hatî destnîşan kirin) bidin ber hev. Li vir armanca sereke ew e ku daneyên xav di grafikan de nîşan bide.

Efsaneya rengîn:

  • gewr - nimûne (ango hesinê tazî)
  • kesk - bandwidth li jor 9500 Mbps
  • zer - bandfirehiya jor 9000 Mbps
  • porteqalî - bandfirehiya jor 8000 Mbps
  • sor - berfê li jêr 8000 Mbps
  • şîn - bêalî (bi firehiya bandê re têkildar nîne)

Xerca çavkaniyê ne-bar

Berî her tiştî, dema ku kom "xew" e, vexwarina çavkaniyê kontrol bikin.

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)
Xerca çavkaniyê ne-bar

Pod-to-Pod

Vê senaryoyê texmîn dike ku xerîdar Pod rasterast bi servera Pod-ê re bi karanîna navnîşana IP-ya xwe ve girêdide.

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)
Senaryoya Pod-to-Pod

TCP

Encamên Pod-to-Pod TCP û vexwarina çavkaniyê ya têkildar:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

UDP

Encamên Pod-to-Pod UDP û vexwarina çavkaniyê ya têkildar:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Pod-to-Service

Ev beş ji bo dozên karanîna rastîn têkildar e, xerîdar Pod bi karûbarê ClusterIP ve bi servera Pod-ê ve girêdide.

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)
Pod-to-Skrîpta Xizmetê

TCP

Encamên TCP-ya Pod-to-Service û vexwarina çavkaniyê ya têkildar:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

UDP

Encamên UDP-ya Pod-to-Service û vexwarina çavkaniyê ya têkildar:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Piştgiriya siyaseta torê

Di nav van tiştên li jor de yekane yê ku destekê nade siyasetê Flannel e. Hemî yên din bi rêkûpêk polîtîkayên torê bicîh dikin, di nav de hundur û der. Karê mezin!

şîfrekirina CNI

Di nav CNI-yên kontrolkirî de yên ku dikarin danûstendina torê ya di navbera Pods de şîfre bikin hene:

  • Antrea IPsec bikar tîne
  • Calico bikaranîna wireguard
  • Ciliium IPsec bikar tîne
  • WeaveNet IPsec bikar tîne

Bandwidth

Ji ber ku hindik CNI mane, bila em hemî senaryoyan bixin yek grafîkê:

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Xerca çavkaniyê

Di vê beşê de, em ê çavkaniyên ku dema pêvajoykirina pêwendiya Pod-to-Pod di TCP û UDP de têne bikar anîn binirxînin. Ti wateya xêzkirina grafek Pod-to-Service tune ye ji ber ku ew agahdariya zêde peyda nake.

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Hemî li hev xistin

Ka em hewl bidin ku hemî grafikan dubare bikin, me li vir hinekî subjektîf destnîşan kir, li şûna nirxên rastîn peyvên "vwry fast", "kêm", hwd.

Nirxandina performansa CNI ji bo Kubernetes li ser tora 10G (Tebax 2020)

Encam û encamên min

Ev hinekî subjektîf e, ji ber ku ez şîroveya xwe ya encaman radigihînim.

Ez kêfxweş im ku CNI-yên nû xuya bûn, Antrea baş pêk anî, di guhertoyên destpêkê de jî gelek fonksiyon hatin bicîh kirin: Vedîtina MTU-ya otomatîk, şîfrekirin û sazkirina hêsan.

Ger em performansê bidin ber hev, hemî CNI baş dixebitin, ji bilî Kube-OVN û Kube-Router. Kube-Router di heman demê de nekaribû MTU-yê teşhîs bike, min di belgeyê de rêyek ku ez wê mîheng bikim nedît (vir daxwazek li ser vê mijarê vekirî ye).

Di warê vexwarina çavkaniyê de, Cilium hîn jî ji yên din bêtir RAM-ê bikar tîne, lê çêker bi eşkere komên mezin hedef digire, ku ev eşkere ne wekî ceribandinek li ser komek sê-node ye. Kube-OVN di heman demê de gelek çavkaniyên CPU û RAM-ê jî dixwe, lê ew CNI-yek ciwan e ku li ser Open vSwitch-ê ye (wek Antrea, ew çêtir performansê dike û kêmtir dixwe).

Ji bilî Flannel her kes xwedî polîtîkayên torê ye. Bi îhtimaleke mezin ew ê ti carî piştgirî nede wan, ji ber ku armanc ji zincîrek hilmê sadetir e: çi qas sivik, çêtir be.

Di heman demê de, di nav tiştên din de, performansa şîfrekirinê ecêb e. Calico yek ji kevintirîn CNI ye, lê şîfrekirin tenê çend hefte berê hate zêdekirin. Wan li şûna IPsec-ê wireguard hilbijart, û bi hêsanî bêje, ew pir û ecêb dixebite, di vê beşa ceribandinê de CNI-yên din bi tevahî vedişêre. Bê guman, mezaxtina çavkaniyê ji ber şîfrekirinê zêde dibe, lê rêwerziya ku hatî bidestxistin hêjayî wê ye (Calico di ceribandina şîfrekirinê de li gorî Cilium, ku di rêza duyemîn de ye, şeş qat pêşkeftinek nîşan da). Wekî din, piştî ku hûn Calico li komê bicîh bikin, hûn dikarin di her kêliyê de wireguard çalak bikin, û heke hûn bixwazin hûn dikarin wê ji bo demek kurt an jî bi domdarî neçalak bikin. Lêbelê, ew pir hêsan e! Em ji we re tînin bîra we ku Calico niha MTU-ê bixweber nas nake (ev taybetmendî ji bo guhertoyên pêşerojê tê plansaz kirin), ji ber vê yekê ger tora we Framesên Jumbo (MTU 9000) piştgirî dike MTU-yê mîheng bikin.

Di nav tiştên din de, bala xwe bidin ku Cilium dikare seyrûsefera di navbera girêkên komê de (û ne tenê di navbera Pods de) şîfre bike, ku dikare ji bo girêkên koma giştî pir girîng be.

Wekî encamek, ez rewşên karanîna jêrîn pêşniyar dikim:

  • Ji bo komek pir piçûk CNI hewce ye AN JI min re ewlehiyê ne hewce ye: kar bi Flannel, CNI ya herî sivik û stabîl (ew di heman demê de yek ji kevintirîn e, li gorî efsaneyê ew ji hêla Homo Kubernautus an Homo Contaitorus ve hatî çêkirin.). Her weha dibe ku hûn bi projeya herî jêhatî re eleqedar bibin k3s, kontrol bike!
  • Ji bo komek birêkûpêk CNI hewce ye: Calico - Hilbijartina we, lê ji bîr nekin ku heke hewce be MTU mîheng bikin. Hûn dikarin bi hêsanî û xwezayî bi polîtîkayên torê re bilîzin, şîfrekirinê çalak bikin û vekin, hwd.
  • Ji bo komika pîvana (pir) mezin, CNI hewce ye: Belê, ceribandin tevgera komên mezin nîşan nade, ez ê kêfxweş bibim ku ceribandinan bikim, lê bi sedan serverên me bi pêwendiyek 10Gbps tune ne. Ji ber vê yekê vebijarka çêtirîn ev e ku hûn bi kêmanî bi Calico û Cilium re ceribandinek guhertî li ser girêkên xwe bimeşînin.

Source: www.habr.com

Add a comment