10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

TL; DR: Kube-Router және Kube-OVN қоспағанда, барлық CNI қажетінше жұмыс істейді, MTU автоматты анықтауды қоспағанда, Calico ең жақсысы.

Мақала-менің өткен тексерулерімнің жаңартылуы (2018 и 2019), тестілеу кезінде мен Ubuntu 1.19 жүйесінде 18.04 жылдың тамызында жаңартылған CNI-мен Kubernetes 2020 қолданамын.

Көрсеткіштерге кіріспес бұрын...

2019 жылдың сәуірінен бастап қандай жаңалық бар?

  • Өз кластеріңізде сынай алады: біздің құралды пайдаланып өз кластеріңізде сынақтарды орындауға болады Kubernetes Network Benchmark: түйме
  • Жаңа мүшелер пайда болды
  • Жаңа сценарийлер: Ағымдағы тексерулер "Pod-to-Pod" желі өнімділігі сынақтарын жүргізеді және сынақтарды нақты әлем жағдайларына жақынырақ жүргізетін жаңа "Pod-to-Service" сценарийі қосылды. Іс жүзінде, API бар Pod Pod IP мекенжайы арқылы емес, қызмет ретінде базамен жұмыс істейді (әрине біз екі сценарий үшін TCP және UDP екеуін де тексереміз).
  • Ресурсты тұтыну: енді әрбір сынақтың өз ресурстарын салыстыру мүмкіндігі бар
  • Қолданба сынақтарын жою: Біз бұдан былай HTTP, FTP және SCP сынақтарын жасамаймыз, өйткені қоғамдастықпен және CNI қолдаушыларымен жемісті ынтымақтастығымыз CNI іске қосылуының кешігуіне (Pod бағдарламасының алғашқы бірнеше секунды) байланысты TCP бойынша iperf нәтижелері мен бұралу нәтижелері арасындағы алшақтықты анықтады. іске қосу, бұл нақты жағдайларда тән емес).
  • Ашық бастапқы дереккөз: барлық сынақ көздері (скрипттер, yml параметрлері және бастапқы «шикі» деректер) қолжетімді осында

Анықтамалық сынақ хаттамасы

Протокол егжей-тегжейлі сипатталған осындаБұл мақала әдепкі ядросы бар Ubuntu 18.04 туралы екенін ескеріңіз.

Бағалау үшін CNI таңдау

Бұл тестілеу бір yaml файлымен конфигурацияланған CNI-ді салыстыруға бағытталған (сондықтан 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

CNI үшін MTU конфигурациялануда

Ең алдымен, біз MTU автоматты анықтауының TCP өнімділігіне әсерін тексереміз:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

TCP өнімділігіне MTU әсері

UDP пайдалану кезінде одан да үлкен бос орын табылды:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)
MTU-ның UDP өнімділігіне әсері

Сынақтарда анықталған ҮЛКЕН өнімділікті ескере отырып, біз барлық CNI қолдаушыларына үміт хатын жібергіміз келеді: CNI-ге автоматты MTU анықтауды қосыңыз. Сіз котяттарды, бір мүйізділерді, тіпті ең сүйкімдісін де құтқарасыз: кішкентай Девоп.

Дегенмен, CNI-ді автоматты MTU анықтауды қолдаусыз пайдалану қажет болса, өнімділікке қол жеткізу үшін оны қолмен конфигурациялауға болады. Бұл Calico, Canal және WeaveNet үшін қолданылатынын ескеріңіз.

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)
Менің ілеспе CNI-ге шағын өтінішім...

CNI тестілеу: шикі деректер

Бұл бөлімде біз CNI-ді дұрыс MTU-мен салыстырамыз (автоматты түрде анықталады немесе қолмен орнатылады). Мұндағы басты мақсат – бастапқы деректерді графиктерде көрсету.

Түс аңызы:

  • сұр - үлгі (яғни жалаңаш темір)
  • жасыл – өткізу қабілеттілігі 9500 Мбит/с жоғары
  • сары – өткізу қабілеттілігі 9000 Мбит/с жоғары
  • қызғылт сары – өткізу қабілеті 8000 Мбит/с жоғары
  • қызыл – өткізу қабілеті 8000 Мбит/с төмен
  • көк - бейтарап (өткізу қабілетіне байланысты емес)

Жүктемесіз ресурстарды тұтыну

Ең алдымен, кластер «ұйықтап жатқанда» ресурстарды тұтынуды тексеріңіз.

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)
Жүктемесіз ресурстарды тұтыну

Pod-to-Pod

Бұл сценарий клиент Pod серверінің IP мекенжайын пайдаланып Pod серверіне тікелей қосылатынын болжайды.

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)
Pod-to-Pod сценарийі

TCP

Pod-to-Pod TCP нәтижелері және сәйкес ресурстарды тұтыну:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

UDP

Pod-to-Pod UDP нәтижелері және сәйкес ресурстарды тұтыну:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

Pod-to-Service

Бұл бөлім нақты пайдалану жағдайларына қатысты, клиент Pod сервері Pod серверіне ClusterIP қызметі арқылы қосылады.

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)
Pod-to-Service сценарийі

TCP

Pod-to-Service TCP нәтижелері және сәйкес ресурстарды тұтыну:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

UDP

Pod-to-Service UDP нәтижелері және сәйкес ресурстарды тұтыну:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

Желі саясатын қолдау

Жоғарыда айтылғандардың ішінде саясатты қолдамайтын жалғыз адам - ​​Фланель. Барлық қалғандары кіріс және шығысты қоса, желі саясаттарын дұрыс орындайды. Жақсы жұмыс!

CNI шифрлауы

Тексерілген CNI арасында Pod арасындағы желі алмасуды шифрлай алатындар бар:

  • IPsec көмегімен антреа
  • Calico сым қорғағышты пайдаланып
  • IPsec көмегімен Cilium
  • IPsec көмегімен WeaveNet

Өткізу қабілеті

CNI аз қалғандықтан, барлық сценарийлерді бір графикке салайық:

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

Ресурстарды тұтыну

Бұл бөлімде TCP және UDP жүйелерінде Pod-to-Pod байланысын өңдеу кезінде пайдаланылатын ресурстарды бағалаймыз. Қосымша ақпарат бермейтіндіктен, Pod-to-Service графигін салудың қажеті жоқ.

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

Барлығын біріктіру

Барлық графиктерді қайталауға тырысайық, біз мұнда нақты мәндерді «vwry fast», «low» және т.

10G желісі арқылы Kubernetes үшін CNI өнімділігін бағалау (тамыз 2020 ж.)

Қорытынды және менің қорытындыларым

Бұл аздап субъективті, өйткені мен нәтижелерді өзімнің түсіндіріп жатырмын.

Мен жаңа CNI пайда болғанына қуаныштымын, Antrea жақсы жұмыс істеді, көптеген функциялар тіпті ерте нұсқаларда жүзеге асырылды: автоматты MTU анықтау, шифрлау және оңай орнату.

Егер өнімділікті салыстыратын болсақ, Kube-OVN және Kube-Router қоспағанда, барлық CNI жақсы жұмыс істейді. Kube-Router де MTU-ны анықтай алмады, мен оны құжаттаманың кез келген жерінде конфигурациялаудың жолын таппадым (осында осы тақырып бойынша сұрау ашық).

Ресурстарды тұтыну тұрғысынан Cilium бұрынғысынша басқаларға қарағанда көбірек жедел жадты пайдаланады, бірақ өндіруші үлкен кластерлерге бағытталғаны анық, бұл үш түйінді кластердегі сынақпен бірдей емес. Kube-OVN сонымен қатар процессор мен RAM ресурстарын көп тұтынады, бірақ бұл Open vSwitch негізіндегі жас CNI (Antrea сияқты, ол жақсырақ жұмыс істейді және аз тұтынады).

Фланелден басқа барлығында желі саясаттары бар. Ол оларды ешқашан қолдамайтыны өте ықтимал, өйткені мақсат буға пісірілген репадан гөрі қарапайым: неғұрлым жеңіл болса, соғұрлым жақсы.

Сондай-ақ, басқа нәрселермен қатар, шифрлау өнімділігі керемет. Calico - ең көне CNI бірі, бірақ шифрлау тек екі апта бұрын қосылды. Олар IPsec орнына сым қорғауды таңдады және қарапайым тілмен айтқанда, ол тестілеудің осы бөлігіндегі басқа CNI-ларды толығымен басып озып, керемет және таңқаларлық жұмыс істейді. Әрине, ресурсты тұтыну шифрлауға байланысты артады, бірақ қол жеткізілген өткізу қабілеті оған тұрарлық (Calico екінші орында тұрған Cilium-пен салыстырғанда шифрлау сынағының алты есе жақсарғанын көрсетті). Сонымен қатар, Calico-ны кластерге орналастырғаннан кейін сым қорғауды кез келген уақытта қосуға болады, сонымен қатар оны қысқа уақытқа немесе қаласаңыз біржола өшіруге болады. Бұл керемет ыңғайлы, дегенмен! Calico қазіргі уақытта MTU-ны автоматты түрде анықтамайтынын еске саламыз (бұл мүмкіндік болашақ нұсқалар үшін жоспарланған), сондықтан желіңіз Jumbo Frames (MTU 9000) қолдайтын болса, MTU конфигурациялауды ұмытпаңыз.

Басқа нәрселермен қатар, Cilium жалпы кластер түйіндері үшін өте маңызды болуы мүмкін кластер түйіндері арасындағы (тек Pod арасындағы емес) трафикті шифрлай алатынын ескеріңіз.

Қорытынды ретінде мен келесі пайдалану жағдайларын ұсынамын:

  • Өте кішкентай кластер үшін CNI керек НЕМЕСЕ маған қауіпсіздік қажет емес: жұмыс Фланель, ең жеңіл және ең тұрақты CNI (ол сонымен бірге ең көнелердің бірі, аңыз бойынша оны Хомо Кубернаут немесе Хомо Контайтору ойлап тапқан). Сізді ең тапқыр жоба қызықтыруы мүмкін к3с, тексеріңіз!
  • Тұрақты кластер үшін CNI қажет: Calico - сіздің таңдауыңыз, бірақ қажет болса, MTU конфигурациялауды ұмытпаңыз. Желілік саясаттармен оңай және табиғи түрде ойнауға, шифрлауды қосуға және өшіруге және т.б.
  • (өте) ауқымды кластер үшін CNI қажет: Сынақ үлкен кластерлердің әрекетін көрсетпейді, мен сынақтарды өткізуге қуанышты болар едім, бірақ бізде 10 Гбит/с қосылымы бар жүздеген серверлер жоқ. Сондықтан ең жақсы нұсқа - кем дегенде Calico және Cilium көмегімен түйіндеріңізде өзгертілген сынақты орындау.

Ақпарат көзі: www.habr.com

пікір қалдыру