Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

ХИБ; DR: Ҳама CNIҳо тавре кор мекунанд, ба истиснои Kube-Router ва Kube-OVN, Calico, ба истиснои ошкоркунии автоматии MTU, беҳтарин аст.

Мақола-навсозии чекҳои гузаштаи ман (2018 и 2019), дар вақти санҷиш ман Kubernetes 1.19-ро дар Ubuntu 18.04 бо CNI-ҳои навшуда аз моҳи августи соли 2020 истифода мебарам.

Пеш аз он ки мо ба нишондиҳандаҳо гузарем ...

Аз моҳи апрели соли 2019 чӣ нав аст?

  • Метавонед дар кластери худ озмоиш кунед: Шумо метавонед бо истифода аз асбоби мо дар кластери худ озмоишҳо гузаронед Шабакаи Kubernetes Benchmark: кнб
  • Аъзоёни нав пайдо шуданд
  • Сенарияҳои нав: Санҷишҳои ҷорӣ санҷишҳои кори шабакаи "Pod-to-Pod"-ро иҷро мекунанд ва скрипти нави "Pod-to-Service" илова карда шудааст, ки санҷишҳоро ба шароити воқеии ҷаҳон наздиктар мегузаронад. Дар амал, Pod бо API-и шумо бо пойгоҳ ҳамчун хидмат кор мекунад, на тавассути суроғаи IP Pod (албатта мо ҳам TCP ва ҳам UDP-ро барои ҳарду сенария тафтиш мекунем).
  • Истеъмоли захираҳо: ҳар як санҷиш ҳоло муқоисаи захираҳои худро дорад
  • Хориҷ кардани санҷишҳои барнома: Мо дигар санҷишҳои HTTP, FTP ва SCP-ро анҷом намедиҳем, зеро ҳамкории судманди мо бо ҷомеа ва нигоҳдорони CNI фосила байни натиҷаҳои iperf аз TCP ва натиҷаҳои curl бо сабаби таъхир дар оғози CNI (якчанд сонияи аввали Pod) ошкор кардааст. оғозёбӣ, ки дар шароити воқеӣ хос нест).
  • Сарчашмаи кушода: ҳама манбаъҳои санҷишӣ (скриптҳо, танзимоти yml ва маълумоти аслии “хом”) дастрасанд дар ин ҷо

Протоколи санҷиши истинод

Протокол ба таври муфассал тавсиф карда шудааст дар ин ҷоЛутфан таваҷҷӯҳ намоед, ки ин мақола дар бораи Ubuntu 18.04 бо ядрои пешфарз аст.

Интихоби CNI барои арзёбӣ

Ин озмоиш ба муқоисаи CNI-ҳои бо як файли yaml танзимшуда нигаронида шудааст (бинобар ин, ҳамаи онҳое, ки бо скриптҳо насб шудаанд, ба монанди VPP ва дигарон, истисно карда мешаванд).

CNI-ҳои интихобшудаи мо барои муқоиса:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Шабакаи фланелӣ + Сиёсати Шабакаи Calico)
  • Cilium 1.8.2
  • Фланел 0.12.0
  • Kube-роутер охирин (2020–08–25)
  • WeaveNet 2.7.0

Танзими MTU барои CNI

Пеш аз ҳама, мо таъсири муайянкунии автоматии MTU-ро ба иҷрои TCP тафтиш мекунем:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Таъсири MTU ба иҷрои TCP

Ҳангоми истифодаи UDP фосилаи боз ҳам калонтар пайдо мешавад:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)
Таъсири MTU ба иҷрои UDP

Бо назардошти таъсири бузурги иҷроиш, ки дар санҷишҳо ошкор шудааст, мо мехоҳем ба ҳамаи нигоҳдорони CNI номаи умед фиристем: лутфан ба CNI муайянкунии автоматии MTU-ро илова кунед. Шумо гурбачахо, яккорнҳо ва ҳатто зеботаринро наҷот хоҳед дод: Девопи хурд.

Аммо, агар ба шумо лозим ояд, ки CNI-ро бидуни дастгирӣ барои муайянкунии автоматии MTU истифода баред, шумо метавонед онро дастӣ танзим кунед, то иҷрои онро ба даст оред. Лутфан қайд кунед, ки ин ба Calico, Canal ва WeaveNet дахл дорад.

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)
Дархости хурди ман ба CNI ҳамроҳ ...

Санҷиши CNI: Маълумоти хом

Дар ин бахш, мо CNI-ро бо MTU дуруст муқоиса хоҳем кард (ба таври худкор муайян карда мешавад ё ба таври дастӣ муқаррар карда мешавад). Ҳадафи асосӣ дар ин ҷо нишон додани маълумоти хом дар графикҳо мебошад.

Қиссаи ранг:

  • хокистарӣ - намуна (яъне оҳани луч)
  • сабз - фарохмаҷрои беш аз 9500 Мбит / с
  • зард - фарохмаҷрои беш аз 9000 Мбит / с
  • норанҷӣ - фарохмаҷрои беш аз 8000 Мбит / с
  • сурх - паҳнои маҷрои камтар аз 8000 Мбит / сония
  • кабуд - бетараф (бо фарохмаҷрои вобаста нест)

Истеъмоли захираҳои бебор

Пеш аз ҳама, вақте ки кластер "хоб аст" истеъмоли захираҳоро тафтиш кунед.

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)
Истеъмоли захираҳои бебор

Под-ба-под

Ин сенария тахмин мекунад, ки Pod муштарӣ мустақиман ба сервери Pod бо истифода аз суроғаи IP-и худ пайваст мешавад.

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)
Сенарияи Pod-to-Pod

TCP

Натиҷаҳои TCP Pod-to-Pod ва масрафи захираҳои мувофиқ:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

UDP

Натиҷаҳои Pod-to-Pod UDP ва масрафи захираҳои мувофиқ:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Под-ба-Хизмат

Ин бахш барои ҳолатҳои истифодаи воқеӣ мувофиқ аст, Pod муштарӣ ба сервери Pod тавассути хидмати ClusterIP пайваст мешавад.

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)
Скрипти Pod-to-Service

TCP

Натиҷаҳои TCP Pod-to-Service ва масрафи захираҳои мувофиқ:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

UDP

Натиҷаҳои UDP Pod-to-Service ва масрафи захираҳои мувофиқ:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Дастгирии сиёсати шабака

Дар байни ҳамаи гуфтаҳои боло, ягона касе, ки сиёсатро дастгирӣ намекунад, Фланел аст. Ҳамаи дигарон сиёсати шабакаро дуруст иҷро мекунанд, аз ҷумла воридот ва содирот. кори бузург!

Рамзгузории CNI

Дар байни CNI-ҳои тафтишшуда онҳое ҳастанд, ки мубодилаи шабакаро байни Подҳо рамзгузорӣ карда метавонанд:

  • Antrea бо истифода аз IPsec
  • Calico бо истифода аз wireguard
  • Cilium бо истифода аз IPsec
  • WeaveNet бо истифода аз IPsec

Бандвейт

Азбаски шумораи камтари CNI боқӣ мондааст, биёед ҳамаи сенарияҳоро ба як график гузорем:

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Истеъмоли захираҳо

Дар ин бахш мо захираҳоеро, ки ҳангоми коркарди алоқаи Pod-to-Pod дар TCP ва UDP истифода мешаванд, арзёбӣ мекунем. Тартиб додани графики Pod-to-Service ҳеҷ маъно надорад, зеро он маълумоти иловагӣ намедиҳад.

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Ҳама чизро якҷоя кардан

Биёед кӯшиш кунем, ки ҳамаи графикҳоро такрор кунем, мо дар ин ҷо каме субъективиро ҷорӣ кардем ва арзишҳои воқеиро бо калимаҳои "vwry fast", "past" ва ғайра иваз кардем.

Арзёбии иҷрои CNI барои Kubernetes тавассути шабакаи 10G (августи 2020)

Хулоса ва хулосаҳои ман

Ин каме субъективӣ аст, зеро ман тафсири худро дар бораи натиҷаҳо мерасонам.

Ман шодам, ки CNI-ҳои нав пайдо шуданд, Antrea хуб кор кард, бисёр вазифаҳо ҳатто дар версияҳои аввал иҷро шуданд: ошкоркунии автоматии MTU, рамзгузорӣ ва насби осон.

Агар мо иҷрои корҳоро муқоиса кунем, ҳама CNI хуб кор мекунанд, ба истиснои Kube-OVN ва Kube-Router. Kube-Router инчунин MTU-ро муайян карда натавонист, ман роҳи танзими онро дар ягон ҷо дар ҳуҷҷатҳо пайдо накардам (дар ин ҷо дархост дар ин мавзӯъ кушода аст).

Дар робита ба истеъмоли захираҳо, Cilium то ҳол нисбат ба дигарон RAM-и бештарро истифода мебарад, аммо истеҳсолкунанда ба таври возеҳ кластерҳои калонро ҳадаф қарор медиҳад, ки ин ба таври возеҳ ба озмоиш дар кластери се гиреҳ монанд нест. Kube-OVN инчунин захираҳои зиёди CPU ва RAM-ро истеъмол мекунад, аммо он як CNI ҷавон аст, ки дар Open vSwitch асос ёфтааст (ба монанди Antrea, он беҳтар кор мекунад ва камтар истеъмол мекунад).

Ҳама ба ҷуз Flannel сиёсати шабакавӣ доранд. Эҳтимол дорад, ки вай ҳеҷ гоҳ онҳоро дастгирӣ намекунад, зеро ҳадаф аз шалғам пухташуда соддатар аст: ҳар қадар сабуктар бошад, ҳамон қадар беҳтар аст.

Инчунин, дар байни чизҳои дигар, иҷрои рамзгузорӣ аҷиб аст. Calico яке аз қадимтарин CNI аст, аммо рамзгузорӣ танҳо чанд ҳафта пеш илова карда шуд. Онҳо ба ҷои IPsec wireguard-ро интихоб карданд ва ба таври оддӣ гӯем, он олӣ ва аҷиб кор мекунад ва дар ин қисми санҷиш дигар CNI-ро комилан фаро мегирад. Албатта, истеъмоли захираҳо аз ҳисоби рамзгузорӣ меафзояд, аммо интиқоли ба даст овардашуда арзанда аст (Calico дар санҷиши рамзгузорӣ дар муқоиса бо Cilium, ки дар ҷои дуюм аст, шаш маротиба беҳтар шудааст). Гузашта аз ин, шумо метавонед дар вақти дилхоҳ пас аз ҷойгиркунии Calico дар кластер Wireguard-ро фаъол созед ва шумо инчунин метавонед онро барои муддати кӯтоҳ ё ба таври доимӣ хомӯш кунед, агар хоҳед. Ин бениҳоят қулай аст, ҳарчанд! Мо ба шумо хотиррасон мекунем, ки Calico дар айни замон MTU-ро худкор муайян намекунад (ин хусусият барои версияҳои оянда ба нақша гирифта шудааст), аз ин рӯ, боварӣ ҳосил кунед, ки MTU-ро танзим кунед, агар шабакаи шумо Frames Jumbo (MTU 9000) -ро дастгирӣ кунад.

Дар байни чизҳои дигар, қайд кунед, ки Cilium метавонад трафикро байни гиреҳҳои кластер (ва на танҳо байни Pods) рамзгузорӣ кунад, ки барои гиреҳҳои кластери ҷамъиятӣ хеле муҳим аст.

Дар натиҷа, ман ҳолатҳои истифодаи зеринро пешниҳод мекунам:

  • Барои кластери хеле хурд ба CNI лозим аст Ё ба ман амният лозим нест: кор бо Flannel, сабуктарин ва устувортарин CNI (вай инчунин яке аз қадимтаринҳост, тибқи ривоят, ӯро Хомо Кубернаутус ё Хомо Контайторус ихтироъ кардаанд.). Шумо инчунин метавонед ба лоиҳаи аҷибтарин таваҷҷӯҳ кунед k3s, тафтиш!
  • Барои кластери муқаррарӣ CNI лозим аст: Калико - интихоби шумо, аммо дар ҳолати зарурӣ танзим кардани MTU-ро фаромӯш накунед. Шумо метавонед ба осонӣ ва табиатан бо сиёсатҳои шабака бозӣ кунед, рамзгузориро фаъол ва хомӯш кунед ва ғайра.
  • Барои кластери миқёси калон (хеле) CNI лозим аст: Хуб, санҷиш рафтори кластерҳои калонро нишон намедиҳад, ман бо хушҳолӣ санҷишҳо мегузаронам, аммо мо садҳо серверҳои пайвасти 10 Гбит / сония надорем. Пас, беҳтарин вариант ин аст, ки санҷиши тағирёфта дар гиреҳҳои худ, ҳадди аққал бо Calico ва Cilium.

Манбаъ: will.com

Илова Эзоҳ