10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

TP; DR: Kube-Router va Kube-OVN bundan mustasno, barcha CNI'lar kerak bo'lganda ishlaydi, Calico, MTUni avtomatik aniqlashdan tashqari, eng yaxshisidir.

Maqola - mening o'tgan tekshiruvlarimning yangilanishi (2018 и 2019), sinov paytida men Ubuntu 1.19 da Kubernetes 18.04 dan 2020 yil avgust holatiga ko'ra yangilangan CNI bilan foydalanmoqdaman.

Ko'rsatkichlarga kirishdan oldin ...

2019-yil aprel oyidan beri nima yangiliklar?

  • O'zingizning klasteringizda sinovdan o'tkazishingiz mumkin: Siz bizning vositamizdan foydalanib, o'z klasteringizda testlarni o'tkazishingiz mumkin Kubernetes Network Benchmark: knb
  • Yangi a'zolar paydo bo'ldi
  • Yangi stsenariylar: Joriy tekshiruvlar "Pod-to-Pod" tarmoq unumdorligi testlarini o'tkazadi va yangi "Pod-to-Service" skripti qo'shildi, bu testlarni real sharoitlarga yaqinroq bajaradi. Amalda, API bilan Podingiz Pod IP manzili orqali emas, balki xizmat sifatida baza bilan ishlaydi (albatta biz ikkala stsenariy uchun ham TCP va UDPni tekshiramiz).
  • Resurs iste'moli: har bir test endi o'z resurslarini taqqoslashga ega
  • Ilova testlarini olib tashlash: Biz HTTP, FTP va SCP testlarini endi o'tkazmaymiz, chunki hamjamiyat va CNI saqlovchilari bilan samarali hamkorligimiz CNI ishga tushirilishidagi kechikish (Podning dastlabki bir necha soniyalari) tufayli TCP orqali iperf natijalari va curl natijalari o'rtasidagi tafovutni aniqladi. real sharoitlarda odatiy bo'lmagan ishga tushirish).
  • Ochiq manba: barcha test manbalari (skriptlar, yml sozlamalari va asl "xom" ma'lumotlar) mavjud shu yerda

Malumot test protokoli

Protokol batafsil tavsiflangan shu yerdaIltimos, ushbu maqola standart yadroga ega Ubuntu 18.04 haqida ekanligini unutmang.

Baholash uchun CNI tanlash

Ushbu test bitta yaml fayli bilan tuzilgan CNI-larni solishtirishga qaratilgan (shuning uchun VPP va boshqalar kabi skriptlar tomonidan o'rnatilganlarning barchasi bundan mustasno).

Taqqoslash uchun tanlangan CNIlarimiz:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flanel tarmog'i + Calico tarmoq siyosati)
  • Cilium 1.8.2
  • Flanel 0.12.0
  • Kube-router oxirgi (2020-08-25)
  • WeaveNet 2.7.0

CNI uchun MTU sozlanmoqda

Avvalo, biz avtomatik MTU aniqlashning TCP ishlashiga ta'sirini tekshiramiz:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

MTU ning TCP ishlashiga ta'siri

UDP dan foydalanganda yanada katta bo'shliq topiladi:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)
MTU ning UDP ishlashiga ta'siri

Sinovlarda aniqlangan KATTA samaradorlikni hisobga olib, biz barcha CNI xodimlariga umid maktubi yubormoqchimiz: CNI-ga avtomatik MTU aniqlashni qo'shing. Siz mushukchalarni, bir shoxli hayvonlarni va hatto eng yoqimlisini qutqarasiz: kichkina Devop.

Biroq, agar siz MTUni avtomatik aniqlashni qo'llab-quvvatlamasdan CNI-dan foydalanishingiz kerak bo'lsa, unumdorlikka erishish uchun uni qo'lda sozlashingiz mumkin. Bu Calico, Canal va WeaveNet uchun amal qilishini unutmang.

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)
Mening hamrohlik qilayotgan CNIlarga kichik iltimosim ...

CNI testi: xom ma'lumotlar

Ushbu bo'limda biz CNIni to'g'ri MTU bilan solishtiramiz (avtomatik ravishda aniqlanadi yoki qo'lda o'rnatiladi). Bu erda asosiy maqsad grafiklarda xom ma'lumotlarni ko'rsatishdir.

Rang afsonasi:

  • kulrang - namuna (ya'ni, yalang'och temir)
  • yashil - tarmoqli kengligi 9500 Mbit / s dan yuqori
  • sariq - tarmoqli kengligi 9000 Mbit / s dan yuqori
  • apelsin - tarmoqli kengligi 8000 Mbit / s dan yuqori
  • qizil - tarmoqli kengligi 8000 Mbit / s dan past
  • ko'k - neytral (o'tkazish qobiliyatiga bog'liq emas)

Resursning yuksiz iste'moli

Avvalo, klaster "uyquda" bo'lganda, resurslarning sarflanishini tekshiring.

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)
Resursning yuksiz iste'moli

Pod-to-Pod

Ushbu stsenariy mijoz Pod o'zining IP manzilidan foydalangan holda to'g'ridan-to'g'ri Pod serveriga ulanishini nazarda tutadi.

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)
Pod-to-Pod stsenariysi

TCP

Pod-to-Pod TCP natijalari va mos keladigan resurslar iste'moli:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

UDP

Pod-to-Pod UDP natijalari va mos keladigan resurslar iste'moli:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

Pod-to-Service

Ushbu bo'lim haqiqiy foydalanish holatlari uchun tegishli, mijoz Pod ClusterIP xizmati orqali Pod serveriga ulanadi.

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)
Pod-to-Service skripti

TCP

Pod-to-Service TCP natijalari va mos keladigan resurslar iste'moli:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

UDP

Pod-to-Service UDP natijalari va mos keladigan resurslar iste'moli:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

Tarmoq siyosatini qo'llab-quvvatlash

Yuqoridagilarning barchasi orasida siyosatni qo'llab-quvvatlamaydigan yagona narsa - Flanel. Qolganlarning hammasi tarmoq siyosatini, jumladan kirish va chiqishni to'g'ri amalga oshiradi. Yaxshi bajarilgan ish!

CNI shifrlash

Tekshirilgan CNIlar orasida Podlar o'rtasida tarmoq almashinuvini shifrlashi mumkin bo'lganlar mavjud:

  • IPsec yordamida antrea
  • Wireguard yordamida Calico
  • IPsec yordamida Cilium
  • IPsec yordamida WeaveNet

Bandwidth

Kamroq CNI qolganligi sababli, keling, barcha stsenariylarni bitta grafikga joylashtiramiz:

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

Resurs iste'moli

Ushbu bo'limda biz TCP va UDP da Pod-to-Pod aloqasini qayta ishlashda foydalaniladigan resurslarni baholaymiz. Pod-to-Service grafigini chizishning ma'nosi yo'q, chunki u qo'shimcha ma'lumot bermaydi.

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

Hammasini bir joyga qo'yish

Keling, barcha grafiklarni takrorlashga harakat qilaylik, biz bu erda bir oz sub'ektivlikni kiritdik, haqiqiy qiymatlarni "vwry fast", "past" va hokazo so'zlar bilan almashtirdik.

10G tarmog'i orqali Kubernetes uchun CNI ish faoliyatini baholash (2020 yil avgust)

Xulosa va mening xulosalarim

Bu biroz sub'ektiv, chunki men natijalarni o'z talqinimni etkazaman.

Yangi CNIlar paydo bo'lganidan xursandman, Antrea yaxshi ishladi, ko'plab funktsiyalar hatto dastlabki versiyalarda ham amalga oshirildi: avtomatik MTU aniqlash, shifrlash va oson o'rnatish.

Agar unumdorlikni solishtirsak, Kube-OVN va Kube-Routerdan tashqari barcha CNI yaxshi ishlaydi. Kube-Router ham MTU ni aniqlay olmadi, men uni hujjatlarning biron bir joyida sozlash yo'lini topa olmadim (shu yerda ushbu mavzu bo'yicha so'rov ochiq).

Resurs iste'moli nuqtai nazaridan, Cilium hali ham boshqalarga qaraganda ko'proq RAMdan foydalanadi, ammo ishlab chiqaruvchi aniq katta klasterlarni maqsad qilib qo'ygan, bu aniq uch tugunli klasterdagi sinov bilan bir xil emas. Kube-OVN ham juda ko'p CPU va RAM resurslarini iste'mol qiladi, lekin bu Open vSwitch-ga asoslangan yosh CNI (Antrea kabi, u yaxshiroq ishlaydi va kamroq iste'mol qiladi).

Flanneldan tashqari hammada tarmoq siyosati mavjud. U ularni hech qachon qo'llab-quvvatlamasligi ehtimoldan yiroq, chunki maqsad bug'langan sholg'omga qaraganda oddiyroq: qanchalik engil bo'lsa, shuncha yaxshi.

Bundan tashqari, boshqa narsalar qatorida, shifrlashning ishlashi ajoyib. Calico - eng qadimgi CNI-lardan biri, ammo shifrlash bir necha hafta oldin qo'shilgan. Ular IPsec o'rniga sim himoyasini tanladilar va sodda qilib aytganda, u ajoyib va ​​hayratlanarli ishlaydi, bu testning ushbu qismida boshqa CNI-larni to'liq bosib oladi. Albatta, shifrlash tufayli resurs iste'moli ortadi, ammo erishilgan o'tkazuvchanlik bunga arziydi (Calico ikkinchi o'rinni egallagan Cilium bilan solishtirganda shifrlash testida olti baravar yaxshilanganini ko'rsatdi). Bundan tashqari, siz Calico-ni klasterga joylashtirganingizdan so'ng istalgan vaqtda sim himoyasini yoqishingiz mumkin, shuningdek, agar xohlasangiz, uni qisqa vaqtga yoki butunlay o'chirib qo'yishingiz mumkin. Bu nihoyatda qulay, ammo! Sizga eslatib o'tamizki, Calico hozirda MTU-ni avtomatik aniqlamaydi (bu xususiyat kelajakdagi versiyalar uchun rejalashtirilgan), shuning uchun agar sizning tarmog'ingiz Jumbo Frames (MTU 9000) ni qo'llab-quvvatlasa, MTU-ni sozlaganingizga ishonch hosil qiling.

Boshqa narsalar qatorida, Cilium klaster tugunlari orasidagi trafikni shifrlashi mumkinligiga e'tibor bering (faqat Podlar o'rtasida emas), bu umumiy klaster tugunlari uchun juda muhim bo'lishi mumkin.

Xulosa sifatida men quyidagi foydalanish holatlarini taklif qilaman:

  • Juda kichik klaster uchun CNI kerak yoki menga xavfsizlik kerak emas: bilan ishlash Flanel, eng engil va eng barqaror CNI (u ham eng qadimgilardan biri, afsonaga ko'ra uni Homo Kubernautus yoki Homo Contaitorus ixtiro qilgan.). Sizni eng mohir loyiha ham qiziqtirishi mumkin k3s, tekshiring!
  • Muntazam klaster uchun CNI kerak: Calico - sizning tanlovingiz, lekin agar kerak bo'lsa, MTU ni sozlashni unutmang. Siz osongina va tabiiy ravishda tarmoq siyosatlari bilan o'ynashingiz, shifrlashni yoqishingiz va o'chirishingiz mumkin va hokazo.
  • (Juda) keng miqyosli klaster uchun CNI kerak: Xo'sh, test katta klasterlarning xatti-harakatlarini ko'rsatmaydi, men testlarni o'tkazishdan xursand bo'lardim, lekin bizda 10 Gbps ulanishga ega yuzlab serverlar yo'q. Shunday qilib, eng yaxshi variant - hech bo'lmaganda Calico va Cilium bilan tugunlaringizda o'zgartirilgan testni o'tkazishdir.

Manba: www.habr.com

a Izoh qo'shish