Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Ин навсозии ман аст нишондиҳандаи қаблӣ, ки ҳоло дар Kubernetes 1.14 бо версияи охирини CNI аз моҳи апрели соли 2019 кор мекунад.

Пеш аз ҳама, ман мехоҳам ба дастаи Cilium ташаккур гӯям: бачаҳо ба ман дар тафтиш ва ислоҳи скриптҳои мониторинги метрикӣ кӯмак карданд.

Аз моҳи ноябри соли 2018 чӣ тағир ёфт

Ин аст он чизе ки аз он вақт инҷониб тағир ёфт (агар шумо таваҷҷӯҳ дошта бошед):

Flannel зудтарин ва соддатарин интерфейси CNI боқӣ мемонад, аммо ба ҳар ҳол сиёсат ва рамзгузории шабакаро дастгирӣ намекунад.

Romana дигар дастгирӣ намешавад, аз ин рӯ мо онро аз меъёр хориҷ кардем.

WeaveNet ҳоло сиёсати шабакаро барои Ingress ва Egress дастгирӣ мекунад! Аммо хосилнокии мехнат паст шудааст.

Дар Calico, шумо ба ҳар ҳол лозим аст, ки андозаи максималии бастаро (MTU) барои иҷрои беҳтарин дастӣ танзим кунед. Calico ду вариантро барои насб кардани CNI пешниҳод мекунад, бинобар ин шумо метавонед бе анбори алоҳидаи ETCD кор кунед:

  • нигоҳдории ҳолат дар API Kubernetes ҳамчун анбори додаҳо (андозаи кластер <50 гиреҳ);
  • нигоҳдории ҳолат дар API Kubernetes ҳамчун мағозаи маълумот бо прокси Typha барои сабук кардани сарборӣ дар K8S API (андозаи кластер > 50 гиреҳ).

Calico дастгирӣ эълон кард сиёсатҳои сатҳи барнома дар болои Истио барои амнияти сатҳи барнома.

Cilium ҳоло рамзгузориро дастгирӣ мекунад! Cilium рамзкунониро бо нақбҳои IPSec таъмин мекунад ва алтернатива ба шабакаи рамзгузоришудаи WeaveNet пешниҳод мекунад. Аммо WeaveNet нисбат ба Cilium бо рамзгузорӣ фаъолтар аст.

Ба шарофати оператори дарунсохт ETCD ҷойгиркунии Cilium ҳоло осонтар аст.

Дастаи Cilium кӯшиш кард, ки вазни худро аз CNI-и худ тавассути кам кардани истеъмоли хотира ва хароҷоти CPU кам кунад, аммо рақибони он ҳанӯз ҳам сабуктаранд.

Контексти бенчмарк

Нишондиҳанда дар се сервери Supermicro ғайри виртуалӣ бо гузариши 10 Гб Supermicro иҷро карда мешавад. Серверҳо мустақиман ба коммутатор тавассути кабелҳои пассивии DAC SFP + пайваст карда мешаванд ва дар ҳамон VLAN бо чаҳорчӯбаҳои jumbo (MTU 9000) танзим карда мешаванд.

Kubernetes 1.14.0 дар Ubuntu 18.04 LTS бо Docker 18.09.2 насб шудааст (версияи пешфарз Docker дар ин нашр).

Барои беҳтар кардани такрористеҳсолӣ, мо тасмим гирифтем, ки ҳамеша усторо дар гиреҳи аввал танзим кунем, қисми сервери нишондиҳандаро дар сервери дуюм ва қисми муштариро дар сеюм ҷойгир кунем. Барои ин, мо NodeSelector-ро дар густариши Kubernetes истифода мебарем.

Мо натиҷаҳои санҷишро дар миқёси зерин тавсиф мекунем:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

Интихоби CNI барои нишондиҳанда

Ин нишондиҳанда танҳо барои CNI аз рӯйхат дар қисмат аст дар бораи сохтани як кластери усто бо kubeadm Ба ҳуҷҷатҳои расмии Kubernetes нигаред. Аз 9 CNI, мо танҳо 6-тоашро мегирем: мо онҳоеро, ки мувофиқи ҳуҷҷатҳо насб кардан душвор аст ва/ё бидуни конфигуратсия кор намекунанд (Romana, Contiv-VPP ва JuniperContrail/TungstenFabric) хориҷ мекунем.

Мо CNI-ҳои зеринро муқоиса мекунем:

  • Calico v3.6
  • Canal v3.6 (аслан Flannel барои шабака + Calico ҳамчун девори девор)
  • Cilium 1.4.2
  • Фланел 0.11.0
  • Kube-роутер 0.2.5
  • WeaveNet 2.5.1

параметр

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

Тавре ки мо гуфта будем, серверҳо ва коммутаторҳо бо чаҳорчӯбаҳои jumbo фаъол карда шудаанд (мо MTU-ро ба 9000 муқаррар кардем). Мо хурсанд мешудем, ки агар CNI ба таври худкор MTU-ро дар асоси конфигуратсияи адаптерҳо муайян кунад. Бо вуҷуди ин, танҳо Cilium ва Flannel ин корро карда буданд. Қисми боқимондаи CNI дар GitHub дархост доранд, ки кашфи автоматии MTU-ро илова кунанд, аммо мо онро тавассути тағир додани ConfigMap барои Calico, Canal ва Kube-роутер ё интиқол додани тағирёбандаи муҳити зист барои WeaveNet дастӣ танзим мекунем.

Мушкилоти нодурусти MTU чист? Ин диаграмма фарқияти байни WeaveNet бо пешфарз MTU ва чаҳорчӯбаи jumbo фаъолшударо нишон медиҳад:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Чӣ тавр MTU ба интиқол таъсир мерасонад?

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

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
CNI ба таври худкор MTU-ро муайян мекунад

График нишон медиҳад, ки шумо бояд MTU-ро барои Calico, Canal, Kube-router ва WeaveNet барои иҷрои беҳтарин танзим кунед. Cilium ва Flannel тавонистанд худашон MTU-ро бидуни ҳеҷ гуна танзимот дуруст муайян кунанд.

Амният

Мо амнияти CNI-ро дар ду ҷиҳат муқоиса хоҳем кард: қобилияти рамзгузории маълумоти интиқолшуда ва татбиқи сиёсатҳои шабакаи Kubernetes (дар асоси санҷишҳои воқеӣ, на ҳуҷҷатҳо).

Танҳо ду CNI маълумотро рамзгузорӣ мекунанд: Cilium ва WeaveNet. Рамзгузорӣ WeaveNet бо гузоштани пароли рамзгузорӣ ҳамчун тағирёбандаи муҳити CNI фаъол карда мешавад. ДАР хуччатхо WeaveNet онро ба таври мураккаб тавсиф мекунад, аммо ҳама чиз оддӣ карда мешавад. Рамзгузорӣ Силиум бо фармонҳо, тавассути эҷод кардани асрори Kubernetes ва тавассути тағир додани daemonSet танзим карда мешавад (назар ба WeaveNet каме мураккабтар аст, аммо Cilium қадам ба қадам дорад дастурҳо).

Дар бобати ба амал баровардани сиёсати шабака бошад, ба он муваффак шуданд Calico, Canal, Cilium ва WeaveNet, ки дар он шумо метавонед қоидаҳои Ingress ва Egress-ро танзим кунед. Барои Kube-роутер қоидаҳои танҳо барои Ingress нест, ва Flannel Сиёсати шабакавӣ умуман вуҷуд надорад.

Инҳоянд натиҷаҳои умумӣ:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Натиҷаҳои санҷиши иҷрои бехатарӣ

Маҳсулнокӣ

Ин нишондод гузариши миёнаи ҳадди аққал се даври ҳар як санҷишро нишон медиҳад. Мо иҷрои TCP ва UDP (бо истифода аз iperf3), барномаҳои воқеиро ба монанди HTTP (бо Nginx ва curl) ё FTP (бо vsftpd ва curl) ва ниҳоят иҷрои барномаро бо истифода аз рамзгузории SCP (бо истифода аз мизоҷ ва сервери OpenSSH) месанҷем.

Барои ҳама санҷишҳо, мо як нишондиҳандаи металлии луч (хати сабз) анҷом додем, то иҷрои CNI бо иҷрои шабакаи маҳаллӣ муқоиса кунем. Дар ин ҷо мо ҳамон миқёсро истифода мебарем, аммо бо ранг:

  • Зард = хеле хуб
  • Норанҷӣ = хуб
  • Кабуд = ҳамин тавр
  • Сурх = бад

Мо CNI-ҳои нодуруст танзимшударо қабул намекунем ва танҳо натиҷаҳои CNI-ро бо MTU дуруст нишон медиҳем. (Эзоҳ: Агар шумо рамзкунониро фаъол созед, Cilium MTU-ро дуруст ҳисоб намекунад, бинобар ин шумо бояд MTU-ро ба 8900 дар версияи 1.4 дастӣ кам кунед. Версияи навбатӣ, 1.5, ин корро ба таври худкор анҷом медиҳад.)

Инҳоянд натиҷаҳо:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Фаъолияти TCP

Ҳама CNI дар нишондиҳандаи TCP хуб кор карданд. CNI бо рамзгузорӣ хеле ақиб мемонад, зеро рамзгузорӣ гарон аст.

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Фаъолияти UDP

Дар ин чо хам хамаи КНСС нагз кор мекунанд. CNI бо рамзгузорӣ тақрибан як натиҷаро нишон дод. Цилиум аз мусобика андаке акиб мемонад, вале он хамагй 2,3 фоизи металли урёнро ташкил медихад, бинобар ин натичаи бад нест. Фаромӯш накунед, ки танҳо Cilium ва Flannel MTU-ро худашон дуруст муайян карданд ва ин натиҷаҳои онҳо бидуни конфигуратсияи иловагӣ мебошанд.

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

Дар бораи аризаи воқеӣ чӣ гуфтан мумкин аст? Тавре ки шумо мебинед, иҷрои умумии HTTP нисбат ба TCP каме пасттар аст. Ҳатто агар шумо HTTP-ро бо TCP истифода баред, мо iperf3-ро дар меъёри TCP танзим кардем, то аз оғози сусте, ки ба меъёри HTTP таъсир мерасонад, пешгирӣ карда шавад. Хама дар ин чо нагз кор карданд. Kube-роутер бартарии возеҳ дорад, аммо WeaveNet хуб кор накард: тақрибан 20% аз металлҳои холӣ бадтар. Cilium ва WeaveNet бо рамзгузорӣ воқеан ғамгинанд.

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

Бо FTP, дигар протоколи TCP, натиҷаҳо фарқ мекунанд. Фланел ва Кубе-роутер корро иҷро мекунанд, аммо Calico, Canal ва Cilium каме ақиб мондаанд ва нисбат ба металлҳои холӣ тақрибан 10% сусттаранд. WeaveNet то 17% қафо мондааст, аммо WeaveNet рамзгузорӣшуда аз Cilium рамзшуда 40% пештар аст.

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

Бо SCP мо фавран дида метавонем, ки рамзгузории SSH ба мо чӣ қадар арзиш дорад. Қариб ҳамаи CNI хуб кор мекунанд, аммо WeaveNet боз ақиб мондааст. Cilium ва WeaveNet бо рамзгузорӣ аз сабаби рамзгузории дукарата (SSH + CNI) бадтарин мебошанд.

Дар ин ҷо ҷадвали ҷамъбастӣ бо натиҷаҳо оварда шудааст:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

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

Акнун биёед муқоиса кунем, ки чӣ гуна CNI захираҳоро зери бори вазнин истеъмол мекунад (ҳангоми интиқоли TCP, 10 Гбит/с). Дар санҷишҳои иҷроиш мо CNI-ро бо металли урён (хати сабз) муқоиса мекунем. Барои истеъмоли захираҳо, биёед Кубернетҳои холисро (хати арғувон) бидуни CNI нишон диҳем ва бубинем, ки чӣ қадар захираҳои иловагӣ CNI истеъмол мекунанд.

Биёед бо хотира оғоз кунем. Ин аст арзиши миёнаи RAM гиреҳҳо (бе буферҳо ва кэш) дар МБ ҳангоми интиқол.

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Истеъмоли хотира

Flannel ва Kube-router натиҷаҳои аъло нишон доданд - ҳамагӣ 50 МБ. Calico ва Canal ҳар кадоме 70 доранд. WeaveNet беш аз 130 МБ -ро истеъмол мекунад ва Cilium то 400-ро истифода мебарад.
Акнун биёед истеъмоли вақти CPU-ро тафтиш кунем. Қобили қайд: дар диаграмма на фоиз, балки промилле нишон дода шудааст, яъне 38 ppm барои «охани урён» 3,8 фоизро ташкил медихад. Инҳоянд натиҷаҳо:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Истеъмоли CPU

Calico, Canal, Flannel ва Kube-роутер CPU хеле самаранок мебошанд - танҳо 2% бештар аз Kubernetes бидуни CNI. WeaveNet бо 5% изофӣ хеле қафо мондааст ва баъд Cilium бо 7%.

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

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)

Натиҷаҳо

Ҷадвал бо ҳамаи натиҷаҳо:

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Натиҷаҳои умумӣ

хулоса

Дар қисми охирин ман фикри субъективии худро дар бораи натиҷаҳо баён мекунам. Дар хотир доред, ки ин нишондиҳанда танҳо гузариши як пайвасти ягонаро дар кластери хеле хурд (3 гиреҳ) месанҷад. Он ба кластерҳои калон (<50 гиреҳ) ё пайвастҳои параллелӣ дахл надорад.

Ман тавсия медиҳам, ки CNI-ҳои зеринро вобаста ба сенария истифода баранд:

  • Оё шумо дар кластери худ доред гиреҳҳои дорои захираҳои кам (якчанд ГБ RAM, якчанд ядро) ва ба шумо хусусиятҳои амниятӣ лозим нест - интихоб кунед Flannel. Ин яке аз CNI-ҳои аз ҳама камхарҷ аст. Ва он бо доираи васеи меъморӣ (amd64, arm, arm64 ва ғайра) мувофиқ аст. Илова бар ин, ин яке аз ду (дигараш Cilium) CNI аст, ки метавонад ба таври худкор MTU-ро муайян кунад, бинобар ин ба шумо ҳеҷ чизро танзим кардан лозим нест. Kube-роутер низ мувофиқ аст, аммо он стандартӣ нест ва ба шумо лозим меояд, ки MTU-ро дастӣ танзим кунед.
  • Агар лозим бошад шабакаро рамзгузорӣ кунед барои бехатарӣ, гирифтан WeaveNet. Фаромӯш накунед, ки андозаи MTU-ро муайян кунед, агар шумо чаҳорчӯбаҳои jumbo-ро истифода баред ва рамзгузориро тавассути муайян кардани парол тавассути тағирёбандаи муҳити зист фаъол созед. Аммо беҳтар аст, ки дар бораи иҷроиш фаромӯш кунед - ин арзиши рамзгузорӣ аст.
  • барои истифодаи муқаррарӣ советую Калико. Ин CNI дар воситаҳои гуногуни ҷойгиркунии Kubernetes (Kops, Kubespray, Rancher ва ғайра) васеъ истифода мешавад. Мисли WeaveNet, ҳатман MTU-ро дар ConfigMap танзим кунед, агар чорчӯбаи jumbo истифода шавад. Ин як воситаи бисёрфунксионалӣ мебошад, ки аз ҷиҳати истеъмоли захираҳо, кор ва амният самаранок аст.

Ва ниҳоят, ман ба шумо маслиҳат медиҳам, ки рушдро пайгирӣ кунед Силиум. Ин CNI як дастаи хеле фаъол дорад, ки дар маҳсулоти худ (хусусиятҳо, сарфаи захираҳо, иҷроиш, амният, кластерсозӣ...) бисёр кор мекунад ва онҳо нақшаҳои хеле ҷолиб доранд.

Натоиҷи санҷиши плагини шабакавии Kubernetes (CNI) беш аз 10 Гбит / сония (Таҷдид: апрели 2019)
Диаграммаи визуалӣ барои интихоби CNI

Манбаъ: will.com

Илова Эзоҳ