تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

TL؛ DR: تعمل جميع CNIs كما ينبغي، باستثناء Kube-Router وKube-OVN، فإن Calico، باستثناء الكشف التلقائي عن MTU، هو الأفضل.

مقال-تحديث الشيكات السابقة (2018 и 2019)، في وقت الاختبار، كنت أستخدم Kubernetes 1.19 على Ubuntu 18.04 مع أرقام CNI المحدثة اعتبارًا من أغسطس 2020.

قبل أن نتعمق في المقاييس..

ما الجديد منذ أبريل 2019؟

  • يمكن إجراء الاختبار على مجموعتك الخاصة: يمكنك إجراء الاختبارات على مجموعتك الخاصة باستخدام أداتنا معيار شبكة Kubernetes: KNB
  • وقد ظهر أعضاء جدد
  • السيناريوهات الجديدة: تعمل الاختبارات الحالية على تشغيل اختبارات أداء الشبكة "Pod-to-Pod"، وتمت إضافة برنامج نصي جديد "Pod-to-Service" لإجراء اختبارات أقرب إلى ظروف العالم الحقيقي. من الناحية العملية، يعمل Pod with API الخاص بك مع القاعدة كخدمة، وليس من خلال عنوان IP الخاص بـ Pod (بالطبع نتحقق من كل من TCP وUDP لكلا السيناريوهين).
  • استهلاك الموارد: أصبح لكل اختبار الآن مقارنة الموارد الخاصة به
  • إزالة اختبارات التطبيق: لم نعد نقوم باختبارات HTTP وFTP وSCP نظرًا لأن تعاوننا المثمر مع المجتمع ومشرفي CNI اكتشف فجوة بين نتائج iperf عبر TCP ونتائج التجعيد بسبب التأخير في بدء تشغيل CNI (الثواني القليلة الأولى من Pod بدء التشغيل، وهو أمر غير معتاد في الظروف الحقيقية).
  • مفتوح المصدر: جميع مصادر الاختبار (النصوص البرمجية وإعدادات yml والبيانات "الأولية" الأصلية) متاحة هنا

بروتوكول الاختبار المرجعي

ويرد وصف البروتوكول بالتفصيل هنايرجى ملاحظة أن هذه المقالة تدور حول Ubuntu 18.04 بالنواة الافتراضية.

اختيار CNI للتقييم

يهدف هذا الاختبار إلى مقارنة CNIs التي تم تكوينها بملف yaml واحد (وبالتالي، يتم استبعاد جميع تلك المثبتة بواسطة البرامج النصية، مثل VPP وغيرها).

CNIs المختارة لدينا للمقارنة:

  • أنتريا v.0.9.1
  • كاليكو v3.16
  • القناة v3.16 (شبكة الفانيلا + سياسات شبكة كاليكو)
  • الهدب 1.8.2
  • الفانيلا 0.12.0
  • جهاز التوجيه Kube الأحدث (2020–08–25)
  • ويفينت 2.7.0

تكوين MTU لـ CNI

أولاً، نتحقق من تأثير الكشف التلقائي عن وحدة الإرسال الكبرى (MTU) على أداء TCP:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تأثير MTU على أداء TCP

تم العثور على فجوة أكبر عند استخدام UDP:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)
تأثير MTU على أداء UDP

نظرًا لتأثير الأداء الهائل الذي تم الكشف عنه في الاختبارات، نود أن نرسل رسالة أمل إلى جميع مشرفي CNI: يرجى إضافة الكشف التلقائي عن MTU إلى CNI. ستنقذ القطط الصغيرة ووحيدات القرن وحتى ألطفها: ديفوب الصغير.

ومع ذلك، إذا كنت بحاجة إلى استخدام CNI دون دعم الكشف التلقائي عن MTU، فيمكنك تكوينه يدويًا للحصول على الأداء. يرجى ملاحظة أن هذا ينطبق على Calico وCanal وWeaveNet.

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)
طلبي الصغير إلى CNIs المرافقين ...

اختبار CNI: البيانات الخام

في هذا القسم، سنقوم بمقارنة CNI مع MTU الصحيح (يتم تحديده تلقائيًا أو ضبطه يدويًا). الهدف الرئيسي هنا هو إظهار البيانات الأولية في الرسوم البيانية.

أسطورة اللون:

  • الرمادي - عينة (أي الحديد العاري)
  • الأخضر - عرض النطاق الترددي فوق 9500 ميجابت في الثانية
  • الأصفر - عرض النطاق الترددي أعلى من 9000 ميجابت في الثانية
  • البرتقالي - عرض النطاق الترددي فوق 8000 ميجابت في الثانية
  • الأحمر - عرض النطاق الترددي أقل من 8000 ميجابت في الثانية
  • الأزرق - محايد (لا علاقة له بعرض النطاق الترددي)

استهلاك الموارد بدون تحميل

بادئ ذي بدء، تحقق من استهلاك الموارد عندما تكون المجموعة "نائمة".

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)
استهلاك الموارد بدون تحميل

جراب إلى جراب

يفترض هذا السيناريو أن العميل Pod يتصل مباشرة بـ Server Pod باستخدام عنوان IP الخاص به.

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)
السيناريو من جراب إلى جراب

TCP

نتائج TCP من Pod-to-Pod واستهلاك الموارد المقابلة:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

UDP

نتائج UDP من Pod-to-Pod واستهلاك الموارد المقابل:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

جراب إلى الخدمة

هذا القسم مناسب لحالات الاستخدام الحقيقي، حيث يتصل العميل Pod بـ Server Pod عبر خدمة ClusterIP.

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)
البرنامج النصي من Pod إلى الخدمة

TCP

نتائج TCP من Pod-to-Service واستهلاك الموارد المقابلة:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

UDP

نتائج UDP من Pod-to-Service واستهلاك الموارد المقابلة:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

دعم سياسة الشبكة

من بين كل ما سبق، الوحيد الذي لا يدعم السياسة هو الفانيلا. يقوم كافة الآخرين بتنفيذ سياسات الشبكة بشكل صحيح، بما في ذلك الواردة والصادرة. عمل عظيم!

تشفير CNI

من بين CNIs التي تم فحصها هناك تلك التي يمكنها تشفير تبادل الشبكة بين البودات:

  • أنتريا باستخدام IPsec
  • كاليكو باستخدام Wireguard
  • الهدب باستخدام IPsec
  • WeaveNet باستخدام IPsec

قدرة

نظرًا لوجود عدد أقل من CNIs المتبقية، فلنضع جميع السيناريوهات في رسم بياني واحد:

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

استهلاك المصدر

في هذا القسم، سنقوم بتقييم الموارد المستخدمة عند معالجة اتصال Pod-to-Pod في TCP وUDP. ليس هناك فائدة من رسم رسم بياني Pod-to-Service لأنه لا يوفر معلومات إضافية.

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

ضع كل شيء معا

دعونا نحاول تكرار جميع الرسوم البيانية، لقد أدخلنا القليل من الذاتية هنا، واستبدال القيم الفعلية بالكلمات "vwry fast"، "منخفض"، وما إلى ذلك.

تقييم أداء CNI لشبكة Kubernetes عبر شبكة 10G (أغسطس 2020)

الاستنتاج واستنتاجاتي

هذا أمر شخصي بعض الشيء، لأنني أنقل تفسيري الخاص للنتائج.

أنا سعيد بظهور وحدات CNI جديدة، وأداء Antrea جيدًا، وتم تنفيذ العديد من الوظائف حتى في الإصدارات المبكرة: الكشف التلقائي عن MTU، والتشفير، والتثبيت السهل.

إذا قارنا الأداء، فإن جميع CNIs تعمل بشكل جيد، باستثناء Kube-OVN وKube-Router. لم يتمكن Kube-Router أيضًا من اكتشاف MTU، ولم أجد طريقة لتكوينه في أي مكان في الوثائق (هنا طلب حول هذا الموضوع مفتوح).

فيما يتعلق باستهلاك الموارد، لا يزال Cilium يستخدم ذاكرة الوصول العشوائي (RAM) أكثر من غيرها، ولكن من الواضح أن الشركة المصنعة تستهدف مجموعات كبيرة، وهو ما لا يشبه بوضوح الاختبار على مجموعة ثلاثية العقد. يستهلك Kube-OVN أيضًا الكثير من موارد وحدة المعالجة المركزية وذاكرة الوصول العشوائي (RAM)، ولكنه عبارة عن CNI شاب يعتمد على Open vSwitch (مثل Antrea، فهو يعمل بشكل أفضل ويستهلك أقل).

الجميع باستثناء Flannel لديهم سياسات الشبكة. ومن المحتمل جدًا أنه لن يدعمهم أبدًا، لأن الهدف أبسط من اللفت المطهو ​​على البخار: كلما كان أخف وزنًا كان ذلك أفضل.

بالإضافة إلى ذلك، من بين أمور أخرى، أداء التشفير مذهل. تعد Calico واحدة من أقدم CNIs، ولكن تمت إضافة التشفير منذ أسبوعين فقط. لقد اختاروا Wireguard بدلاً من IPsec، وببساطة، فهو يعمل بشكل رائع ومذهل، ويتفوق تمامًا على CNIs الأخرى في هذا الجزء من الاختبار. بالطبع، يزداد استهلاك الموارد بسبب التشفير، لكن الإنتاجية المحققة تستحق العناء (أظهرت كاليكو تحسنًا بمقدار ستة أضعاف في اختبار التشفير مقارنةً بـ Cilium، الذي يحتل المرتبة الثانية). علاوة على ذلك، يمكنك تمكين Wireguard في أي وقت بعد نشر Calico في المجموعة، ويمكنك أيضًا تعطيله لفترة قصيرة أو بشكل دائم إذا كنت ترغب في ذلك. إنها مريحة بشكل لا يصدق، رغم ذلك! نذكرك بأن Calico لا تقوم حاليًا بالكشف التلقائي عن MTU (هذه الميزة مخطط لها في الإصدارات المستقبلية)، لذا تأكد من تكوين MTU إذا كانت شبكتك تدعم Jumbo Frames (MTU 9000).

من بين أمور أخرى، لاحظ أن Cilium يمكنه تشفير حركة المرور بين العقد العنقودية (وليس فقط بين Pods)، وهو ما قد يكون مهمًا جدًا لعقد الكتلة العامة.

في الختام، أقترح حالات الاستخدام التالية:

  • أحتاج إلى CNI لمجموعة صغيرة جدًا أو لا أحتاج إلى الأمان: يعمل مع الفانيلي، CNI الأخف والأكثر استقرارًا (وهو أيضًا واحد من الأقدم، وفقًا للأسطورة، تم اختراعه بواسطة Homo Kubernautus أو Homo Contaitorus). قد تكون مهتمًا أيضًا بالمشروع الأكثر إبداعًا k3s، يفحص!
  • تحتاج CNI لمجموعة عادية: كاليكو - اختيارك، ولكن لا تنس تكوين وحدة الإرسال الكبرى (MTU) إذا لزم الأمر. يمكنك اللعب بسهولة وبشكل طبيعي مع سياسات الشبكة، وتشغيل التشفير وإيقاف تشغيله، وما إلى ذلك.
  • تحتاج إلى CNI لمجموعة واسعة النطاق (جدًا).: حسنًا، الاختبار لا يُظهر سلوك المجموعات الكبيرة، ويسعدني إجراء الاختبارات، لكن ليس لدينا مئات الخوادم ذات اتصال بسرعة 10 جيجابت في الثانية. لذا فإن الخيار الأفضل هو إجراء اختبار معدل على العقد الخاصة بك، على الأقل مع كاليكو وسيليوم.

المصدر: www.habr.com

إضافة تعليق