ProHoster > Blog > Ma'muriyat > 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 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:
MTU ning TCP ishlashiga ta'siri
UDP dan foydalanganda yanada katta bo'shliq topiladi:
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.
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)
Ushbu stsenariy mijoz Pod o'zining IP manzilidan foydalangan holda to'g'ridan-to'g'ri Pod serveriga ulanishini nazarda tutadi.
Pod-to-Pod stsenariysi
TCP
Pod-to-Pod TCP natijalari va mos keladigan resurslar iste'moli:
UDP
Pod-to-Pod UDP natijalari va mos keladigan resurslar iste'moli:
Pod-to-Service
Ushbu bo'lim haqiqiy foydalanish holatlari uchun tegishli, mijoz Pod ClusterIP xizmati orqali Pod serveriga ulanadi.
Pod-to-Service skripti
TCP
Pod-to-Service TCP natijalari va mos keladigan resurslar iste'moli:
UDP
Pod-to-Service UDP natijalari va mos keladigan resurslar iste'moli:
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:
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.
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.
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.