CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

TL; DR: CNI guztiek behar duten moduan funtzionatzen dute, Kube-Router eta Kube-OVN izan ezik, Calico da onena, MTU detekzio automatikoa izan ezik.

Nire iraganeko txekeen artikulua eguneratzea (2018 ΠΈ 2019), probak egiteko unean Kubernetes 1.19 erabiltzen ari naiz Ubuntu 18.04-n CNI eguneratuekin 2020ko abuztuan.

Neurrietan murgildu aurretik...

Zer berri dago 2019ko apiriletik?

  • Zure klusterean probatu dezakezu: probak zure klusterean exekutatu ditzakezu gure tresna erabiliz Kubernetes sareko erreferentzia: knb
  • Kide berriak agertu dira
  • Eszenatoki berriak: egungo egiaztapenek "Pod-to-Pod" sareko errendimendu-probak egiten dituzte, eta "Pod-to-Service" script berri bat gehitu da, probak mundu errealeko baldintzetatik hurbilago exekutatzen dituena. Praktikan, APIarekin zure Podak oinarriarekin funtzionatzen du zerbitzu gisa, eta ez Pod ip helbidearen bidez (noski TCP eta UDP egiaztatzen ditugu bi eszenatokietarako).
  • Baliabideen kontsumoa: proba bakoitzak bere baliabideen konparaketa du orain
  • Aplikazioen probak kentzea: jada ez ditugu HTTP, FTP eta SCP probak egiten, komunitatearekin eta CNIko arduradunekin dugun lankidetza emankorra TCPren eta kizkurren emaitzen arteko hutsune bat aurkitu baitu CNI abiaraztearen atzerapenagatik (Pod-en lehen segundoetan). abiarazte, baldintza errealetan ohikoa ez dena).
  • Iturburu irekia: proba-iturri guztiak (scriptak, yml ezarpenak eta jatorrizko datu "gordinak") eskuragarri daude Hemen

Erreferentzia Protokoloa

Protokoloa zehatz-mehatz deskribatzen da HemenKontuan izan artikulu hau Ubuntu 18.04-ri buruzkoa dela nukleo lehenetsiarekin.

Ebaluaziorako CNI bat hautatzea

Proba hau yaml fitxategi batekin konfiguratutako CNIak alderatzera zuzenduta dago (beraz, scriptek instalatutako guztiak, hala nola VPP eta beste, kanpoan geratzen dira).

Gure hautatutako CNIak alderatzeko:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flanela sarea + Calico sarearen gidalerroak)
  • Zilioa 1.8.2
  • Flanela 0.12.0
  • Kube-router azkena (2020-08-25)
  • WeaveNet 2.7.0

MTU CNIrako konfiguratzen

Lehenik eta behin, MTU automatikoki hautemateak TCPren errendimenduan duen eragina egiaztatzen dugu:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

MTUren eragina TCP errendimenduan

UDP erabiltzean are hutsune handiagoa aurkitzen da:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)
MTUren eragina UDP errendimenduan

Probetan agerian utzitako errendimendu-eragin HANDIA ikusita, itxaropen gutun bat bidali nahi diegu CNIren mantentzaile guztiei: gehitu MTU detekzio automatikoa CNIri. Katatuak, unikornioak eta baita politena ere gordeko dituzu: Devop txikia.

Hala ere, CNI MTU automatikoki detektatzeko laguntzarik gabe erabili behar baduzu, eskuz konfigura dezakezu errendimendua lortzeko. Kontuan izan Calico, Canal eta WeaveNet-i aplikatzen zaiela.

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)
Nire eskaera txikia batera doazen CNIei...

CNI Testing: Datu gordinak

Atal honetan, CNI MTU zuzenarekin alderatuko dugu (automatikoki zehaztuta edo eskuz ezarrita). Hemen helburu nagusia datu gordinak grafikoetan erakustea da.

Koloreen kondaira:

  • grisa - lagina (hau da, burdina hutsa)
  • berdea - 9500 Mbps-tik gorako banda zabalera
  • horia - 9000 Mbps-tik gorako banda-zabalera
  • laranja - 8000 Mbps-tik gorako banda zabalera
  • gorria - 8000 Mbps-tik beherako banda zabalera
  • urdina - neutroa (ez dago banda zabalerarekin lotuta)

Kargarik gabeko baliabideen kontsumoa

Lehenik eta behin, egiaztatu baliabideen kontsumoa klusterra "lotan" dagoenean.

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)
Kargarik gabeko baliabideen kontsumoa

Pod-to-Pod

Eszenatoki honek suposatzen du bezeroaren Podak zuzenean konektatzen duela Pod zerbitzariarekin bere IP helbidea erabiliz.

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)
Pod-to-Pod eszenatokia

TCP

Pod-to-Pod TCP emaitzak eta dagokion baliabide-kontsumoa:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

UDP

Pod-to-Pod UDP emaitzak eta dagozkion baliabideen kontsumoa:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

Pod-to-Zerbitzua

Atal hau benetako erabilera kasuetarako garrantzitsua da, bezero Pod pod zerbitzariarekin konektatzen da ClusterIP zerbitzuaren bidez.

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)
Pod-to-Service Scripta

TCP

Pod-to-Service TCP emaitzak eta dagokion baliabide-kontsumoa:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

UDP

Pod-to-Service UDP emaitzak eta dagozkion baliabideen kontsumoa:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

Sareko politiken laguntza

Aurreko guztien artean, politika onartzen ez duen bakarra Flanela da. Beste guztiek behar bezala ezartzen dituzte sare-politikak, sarrerakoak eta irteerakoak barne. Lan bikaina!

CNI enkriptatzea

Egiaztaturiko CNIen artean, Pods-en arteko sare-trukea enkriptatu dezaketenak daude:

  • Antrea IPsec erabiliz
  • Calico wireguard erabiliz
  • Cilium IPsec erabiliz
  • WeaveNet IPsec erabiliz

throughput

CNI gutxiago geratzen direnez, jar ditzagun eszenatoki guztiak grafiko batean:

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

Baliabideen kontsumoa

Atal honetan, TCP eta UDP-n Pod-to-Pod komunikazioa prozesatzeko erabiltzen diren baliabideak ebaluatuko ditugu. Ez du balio Pod-to-Service grafiko bat marrazteak ez baitu informazio gehigarririk ematen.

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

Guztia batuta

Saia gaitezen grafiko guztiak errepikatzen, subjektibotasun apur bat sartu dugu hemen, benetako balioak "vwry fast", "low", etab hitzekin ordezkatuz.

CNIren errendimenduaren ebaluazioa 10G sareko Kubernetes-en (2020ko abuztua)

Ondorioa eta nire ondorioak

Hau apur bat subjektiboa da, emaitzen interpretazio propioa ematen ari naizelako.

Pozten naiz CNI berriak agertu zirelako, Antreak ondo funtzionatu zuen, lehen bertsioetan ere funtzio asko ezarri ziren: MTU detekzio automatikoa, enkriptatzea eta instalazio erraza.

Errendimendua alderatzen badugu, CNI guztiek ondo funtzionatzen dute, Kube-OVN eta Kube-Router izan ezik. Kube-Router-ek ere ezin izan zuen MTU detektatu, ez nuen dokumentazioan inon konfiguratzeko modurik aurkitu (Hemen gai honi buruzko eskaera zabalik dago).

Baliabideen kontsumoari dagokionez, Cilium-ek beste batzuk baino RAM gehiago erabiltzen du oraindik, baina fabrikatzaileak argi eta garbi kluster handiei zuzenduta dago, eta hori ez da argi eta garbi hiru nodoko kluster batean egindako probaren berdina. Kube-OVN-k CPU eta RAM baliabide asko kontsumitzen ditu, baina Open vSwitch-en oinarritutako CNI gaztea da (Antreak bezala, hobeto funtzionatzen du eta gutxiago kontsumitzen du).

Flannel izan ezik, guztiek dituzte sare-politikak. Oso litekeena da inoiz ez dituela onartzen, helburua lurrunetan arbia baino sinpleagoa baita: zenbat eta arinago, orduan eta hobeto.

Gainera, besteak beste, zifratzearen errendimendua harrigarria da. Calico CNI zaharrenetako bat da, baina enkriptatzea duela aste pare bat baino ez zen gehitu. IPsec-en ordez wireguard aukeratu zuten, eta, besterik gabe, bikain eta harrigarri funtzionatzen du, probaren zati honetan beste CNIak guztiz eclipsing. Jakina, enkriptatzeari esker baliabideen kontsumoa handitzen da, baina lortutako errendimenduak merezi du (Calicok sei aldiz hobetu du zifratze proban Cilium-ekin alderatuta, bigarren postuan dagoena). Gainera, Wireguard edozein unetan gaitu dezakezu Calico klusterera zabaldu ondoren, eta nahi izanez gero, denbora laburrean edo betiko desgaitu dezakezu. Ikaragarri erosoa da, baina! Gogorarazten dizugu Calicok ez duela MTU automatikoki detektatzen (eginbide hau etorkizuneko bertsioetarako aurreikusita dago), beraz, ziurtatu MTU konfiguratzen duzula zure sareak Jumbo Frames (MTU 9000) onartzen badu.

Besteak beste, kontuan izan Cilium-ek kluster-nodoen arteko trafikoa enkriptatu dezakeela (eta ez Pods-en artean bakarrik), eta hori oso garrantzitsua izan daiteke kluster-nodo publikoentzat.

Ondorio gisa, erabilera kasu hauek proposatzen ditut:

  • CNI behar dut oso kluster txiki baterako EDO ez dut segurtasunik behar: lan egin flannel, CNI arinena eta egonkorrena (zaharrenetakoa ere bada, kondairaren arabera, Homo Kubernautus edo Homo Contaitorus-ek asmatu zuen.). Proiekturik asmagarriena ere interesatuko zaizu k3, egiaztatu!
  • CNI behar da ohiko kluster baterako: Calico - zure aukera, baina ez ahaztu MTU konfiguratzea behar izanez gero. Sareko politikekin erraz eta modu naturalean jolastu dezakezu, enkriptatzea aktibatu eta desaktibatu, etab.
  • Eskala (oso) handiko klusterrako CNI behar da: Tira, probak ez du kluster handien portaera erakusten, gustura egingo nuke probak, baina ez ditugu ehundaka zerbitzari 10Gbps konexioa duten. Beraz, aukerarik onena zure nodoetan proba aldatu bat egitea da, gutxienez Calico eta Cilium-ekin.

Iturria: www.habr.com

Gehitu iruzkin berria