ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

TL؛ DR: همه CNI ها همانطور که باید کار می کنند، به استثنای Kube-Router و Kube-OVN، Calico، به استثنای تشخیص خودکار MTU، بهترین است.

به روز رسانی مقاله چک های گذشته من (2018 и 2019، در زمان آزمایش از Kubernetes 1.19 در اوبونتو 18.04 با CNIهای به روز شده از آگوست 2020 استفاده می کنم.

قبل از اینکه به معیارها بپردازیم ...

از آوریل 2019 چه خبر است؟

  • می توانید روی خوشه خود آزمایش کنید: با استفاده از ابزار ما می توانید آزمایش هایی را روی خوشه خود اجرا کنید معیار شبکه Kubernetes: knb
  • اعضای جدید ظاهر شده اند
  • سناریوهای جدید: بررسی‌های فعلی تست‌های عملکرد شبکه «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 را بررسی می کنیم:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

تاثیر MTU بر عملکرد TCP

هنگام استفاده از UDP شکاف بزرگتری پیدا می شود:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)
تاثیر MTU بر عملکرد UDP

با توجه به تأثیر عملکرد عظیمی که در آزمایش‌ها آشکار شد، می‌خواهیم یک نامه امیدوارکننده به همه نگهبانان CNI ارسال کنیم: لطفاً تشخیص خودکار MTU را به CNI اضافه کنید. شما بچه گربه ها، تک شاخ ها و حتی بامزه ترین آنها را نجات خواهید داد: Devop کوچک.

با این حال، اگر نیاز به استفاده از CNI بدون پشتیبانی از تشخیص خودکار MTU دارید، می‌توانید آن را به صورت دستی پیکربندی کنید تا عملکرد را دریافت کنید. لطفاً توجه داشته باشید که این برای Calico، Canal و WeaveNet صدق می کند.

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)
درخواست کوچک من از CNI های همراه...

تست CNI: داده های خام

در این بخش، ما CNI را با MTU صحیح (به طور خودکار تعیین می شود یا به صورت دستی تنظیم می شود) مقایسه می کنیم. هدف اصلی در اینجا نمایش داده های خام در نمودارها است.

افسانه رنگ:

  • خاکستری - نمونه (یعنی آهن خالی)
  • سبز - پهنای باند بالای 9500 مگابیت در ثانیه
  • زرد - پهنای باند بالاتر از 9000 مگابیت در ثانیه
  • نارنجی - پهنای باند بالای 8000 مگابیت در ثانیه
  • قرمز - پهنای باند زیر 8000 مگابیت در ثانیه
  • آبی - خنثی (بدون ارتباط با پهنای باند)

مصرف منابع بدون بار

اول از همه، مصرف منابع را در زمانی که خوشه "خواب" است بررسی کنید.

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)
مصرف منابع بدون بار

Pod-to-Pod

در این سناریو فرض می‌شود که Pod مشتری مستقیماً با استفاده از آدرس IP سرور به Pod متصل می‌شود.

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)
سناریوی Pod-to-Pod

TCP

نتایج Pod-to-Pod TCP و مصرف منابع مربوطه:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

UDP

نتایج UDP Pod-to-Pod و مصرف منابع مربوطه:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

Pod-to-Service

این بخش مربوط به موارد استفاده واقعی است، سرویس گیرنده Pod از طریق سرویس ClusterIP به سرور Pod متصل می شود.

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)
اسکریپت Pod-to-Service

TCP

نتایج Pod-to-Service TCP و مصرف منابع مربوطه:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

UDP

نتایج UDP Pod-to-Service و مصرف منابع مربوطه:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

پشتیبانی از خط مشی شبکه

در میان همه موارد فوق، تنها موردی که از سیاست حمایت نمی کند فلانل است. بقیه سیاست‌های شبکه از جمله ورودی و خروجی را به درستی اجرا می‌کنند. کارت عالی بود!

رمزگذاری CNI

در میان CNI های بررسی شده، مواردی وجود دارند که می توانند تبادل شبکه بین پادها را رمزگذاری کنند:

  • Antrea با استفاده از IPsec
  • Calico با استفاده از محافظ سیم
  • سیلیوم با استفاده از IPsec
  • WeaveNet با استفاده از IPsec

توان

از آنجایی که تعداد کمتری CNI باقی مانده است، بیایید همه سناریوها را در یک نمودار قرار دهیم:

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

مصرف منابع

در این بخش، منابع مورد استفاده در هنگام پردازش ارتباطات Pod-to-Pod در TCP و UDP را ارزیابی خواهیم کرد. ترسیم نمودار Pod-to-Service هیچ فایده ای ندارد زیرا اطلاعات اضافی را ارائه نمی دهد.

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

همه اش را بگذار کنار هم

بیایید سعی کنیم تمام نمودارها را تکرار کنیم، ما در اینجا کمی ذهنیت را معرفی کردیم و مقادیر واقعی را با کلمات "vwry fast"، "low" و غیره جایگزین کردیم.

ارزیابی عملکرد CNI برای Kubernetes بیش از شبکه 10G (اوت 2020)

نتیجه گیری و نتیجه گیری من

این کمی ذهنی است، زیرا من تفسیر خود را از نتایج بیان می کنم.

خوشحالم که 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 یک تست اصلاح شده روی گره های خود اجرا کنید.

منبع: www.habr.com

اضافه کردن نظر