سناریوهای جدید: بررسیهای فعلی تستهای عملکرد شبکه «Pod-to-Pod» را اجرا میکنند و یک اسکریپت جدید «Pod-to-Service» اضافه شده است که آزمایشها را نزدیکتر به شرایط دنیای واقعی اجرا میکند. در عمل، Pod with API شما با پایه بهعنوان یک سرویس کار میکند، نه از طریق آدرس IP Pod (البته برای هر دو سناریو، TCP و UDP را بررسی میکنیم).
مصرف منابع: اکنون هر آزمون مقایسه منابع خاص خود را دارد
حذف تست های کاربردی: ما دیگر تست های HTTP، FTP و SCP را انجام نمی دهیم زیرا همکاری مثمر ثمر ما با جامعه و نگهبانان CNI به دلیل تاخیر در راه اندازی CNI (چند ثانیه اول Pod) شکافی را بین نتایج iperf نسبت به TCP و نتایج curl کشف کرده است. راه اندازی، که در شرایط واقعی معمول نیست).
منبع باز: همه منابع آزمایشی (اسکریپت ها، تنظیمات yml و داده های "خام" اصلی) در دسترس هستند اینجا
پروتکل آزمون مرجع
پروتکل به تفصیل توضیح داده شده است اینجالطفا توجه داشته باشید که این مقاله در مورد اوبونتو 18.04 با هسته پیش فرض است.
انتخاب CNI برای ارزیابی
این آزمایش با هدف مقایسه CNI های پیکربندی شده با یک فایل yaml انجام می شود (بنابراین، تمام مواردی که توسط اسکریپت ها نصب شده اند، مانند VPP و سایر موارد، حذف می شوند).
CNI های انتخابی ما برای مقایسه:
Antrea نسخه 0.9.1
Calico نسخه 3.16
Canal نسخه 3.16 (شبکه فلانل + خط مشی های شبکه Calico)
سیلیوم 1.8.2
فلانل 0.12.0
جدیدترین روتر Kube (2020–08–25)
WeaveNet 2.7.0
پیکربندی MTU برای CNI
اول از همه، ما تأثیر تشخیص خودکار MTU بر عملکرد TCP را بررسی می کنیم:
تاثیر MTU بر عملکرد TCP
هنگام استفاده از UDP شکاف بزرگتری پیدا می شود:
تاثیر MTU بر عملکرد UDP
با توجه به تأثیر عملکرد عظیمی که در آزمایشها آشکار شد، میخواهیم یک نامه امیدوارکننده به همه نگهبانان CNI ارسال کنیم: لطفاً تشخیص خودکار MTU را به CNI اضافه کنید. شما بچه گربه ها، تک شاخ ها و حتی بامزه ترین آنها را نجات خواهید داد: Devop کوچک.
با این حال، اگر نیاز به استفاده از CNI بدون پشتیبانی از تشخیص خودکار MTU دارید، میتوانید آن را به صورت دستی پیکربندی کنید تا عملکرد را دریافت کنید. لطفاً توجه داشته باشید که این برای Calico، Canal و WeaveNet صدق می کند.
درخواست کوچک من از CNI های همراه...
تست CNI: داده های خام
در این بخش، ما CNI را با MTU صحیح (به طور خودکار تعیین می شود یا به صورت دستی تنظیم می شود) مقایسه می کنیم. هدف اصلی در اینجا نمایش داده های خام در نمودارها است.
افسانه رنگ:
خاکستری - نمونه (یعنی آهن خالی)
سبز - پهنای باند بالای 9500 مگابیت در ثانیه
زرد - پهنای باند بالاتر از 9000 مگابیت در ثانیه
نارنجی - پهنای باند بالای 8000 مگابیت در ثانیه
قرمز - پهنای باند زیر 8000 مگابیت در ثانیه
آبی - خنثی (بدون ارتباط با پهنای باند)
مصرف منابع بدون بار
اول از همه، مصرف منابع را در زمانی که خوشه "خواب" است بررسی کنید.
مصرف منابع بدون بار
Pod-to-Pod
در این سناریو فرض میشود که Pod مشتری مستقیماً با استفاده از آدرس IP سرور به Pod متصل میشود.
سناریوی Pod-to-Pod
TCP
نتایج Pod-to-Pod TCP و مصرف منابع مربوطه:
UDP
نتایج UDP Pod-to-Pod و مصرف منابع مربوطه:
Pod-to-Service
این بخش مربوط به موارد استفاده واقعی است، سرویس گیرنده Pod از طریق سرویس ClusterIP به سرور Pod متصل می شود.
اسکریپت Pod-to-Service
TCP
نتایج Pod-to-Service TCP و مصرف منابع مربوطه:
UDP
نتایج UDP Pod-to-Service و مصرف منابع مربوطه:
پشتیبانی از خط مشی شبکه
در میان همه موارد فوق، تنها موردی که از سیاست حمایت نمی کند فلانل است. بقیه سیاستهای شبکه از جمله ورودی و خروجی را به درستی اجرا میکنند. کارت عالی بود!
رمزگذاری CNI
در میان CNI های بررسی شده، مواردی وجود دارند که می توانند تبادل شبکه بین پادها را رمزگذاری کنند:
Antrea با استفاده از IPsec
Calico با استفاده از محافظ سیم
سیلیوم با استفاده از IPsec
WeaveNet با استفاده از IPsec
توان
از آنجایی که تعداد کمتری CNI باقی مانده است، بیایید همه سناریوها را در یک نمودار قرار دهیم:
مصرف منابع
در این بخش، منابع مورد استفاده در هنگام پردازش ارتباطات Pod-to-Pod در TCP و UDP را ارزیابی خواهیم کرد. ترسیم نمودار Pod-to-Service هیچ فایده ای ندارد زیرا اطلاعات اضافی را ارائه نمی دهد.
همه اش را بگذار کنار هم
بیایید سعی کنیم تمام نمودارها را تکرار کنیم، ما در اینجا کمی ذهنیت را معرفی کردیم و مقادیر واقعی را با کلمات "vwry fast"، "low" و غیره جایگزین کردیم.
نتیجه گیری و نتیجه گیری من
این کمی ذهنی است، زیرا من تفسیر خود را از نتایج بیان می کنم.
خوشحالم که 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 انتخاب کردند و به زبان ساده، عالی و شگفت انگیز کار می کند و دیگر CNI ها را در این بخش از آزمایش کاملا تحت الشعاع قرار می دهد. البته، مصرف منابع به دلیل رمزگذاری افزایش می یابد، اما توان عملیاتی به دست آمده ارزش آن را دارد (Calico در تست رمزگذاری در مقایسه با Cilium که در رتبه دوم قرار دارد، شش برابر پیشرفت نشان داد). علاوه بر این، میتوانید در هر زمانی پس از استقرار Calico در کلاستر، Wireguard را فعال کنید و همچنین میتوانید در صورت تمایل آن را برای مدت کوتاهی یا بهطور دائم غیرفعال کنید. با این حال، فوق العاده راحت است! یادآوری می کنیم که Calico در حال حاضر MTU را به طور خودکار شناسایی نمی کند (این ویژگی برای نسخه های آینده برنامه ریزی شده است)، بنابراین اگر شبکه شما از Jumbo Frames (MTU 9000) پشتیبانی می کند، حتما MTU را پیکربندی کنید.
از جمله موارد دیگر، توجه داشته باشید که Cilium میتواند ترافیک بین گرههای خوشه (و نه فقط بین Pods) را رمزگذاری کند، که میتواند برای گرههای خوشه عمومی بسیار مهم باشد.
به عنوان نتیجه، موارد استفاده زیر را پیشنهاد می کنم:
برای یک خوشه بسیار کوچک به CNI نیاز دارم یا به امنیت نیاز ندارم: کار با فلنج، سبک ترین و پایدارترین CNI (او همچنین یکی از قدیمی ترین هاست، طبق افسانه ها او توسط هومو کوبرناتوس یا هومو کنتایتوروس اختراع شد.). همچنین ممکن است به مبتکرانه ترین پروژه علاقه مند باشید k3s، بررسی!
برای یک خوشه معمولی به CNI نیاز دارید: چلوار - انتخاب شماست، اما در صورت نیاز پیکربندی MTU را فراموش نکنید. شما می توانید به راحتی و به طور طبیعی با سیاست های شبکه بازی کنید، رمزگذاری را روشن و خاموش کنید و غیره.
برای خوشه در مقیاس (بسیار) به CNI نیاز دارید: خوب، آزمایش رفتار خوشه های بزرگ را نشان نمی دهد، خوشحال می شوم آزمایش هایی را انجام دهم، اما ما صدها سرور با اتصال 10 گیگابیت بر ثانیه نداریم. بنابراین بهترین گزینه این است که حداقل با Calico و Cilium یک تست اصلاح شده روی گره های خود اجرا کنید.