Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
یہ میری اپ ڈیٹ ہے۔ پچھلے معیار، جو اب اپریل 1.14 تک تازہ ترین CNI ورژن کے ساتھ Kubernetes 2019 پر چلتا ہے۔

سب سے پہلے، میں Cilium ٹیم کا شکریہ ادا کرنا چاہتا ہوں: لڑکوں نے میٹرکس مانیٹرنگ اسکرپٹس کو چیک کرنے اور درست کرنے میں میری مدد کی۔

نومبر 2018 سے کیا بدلا ہے۔

اس کے بعد سے جو کچھ بدلا ہے وہ یہ ہے (اگر آپ دلچسپی رکھتے ہیں):

فلانیل سب سے تیز اور آسان ترین CNI انٹرفیس ہے، لیکن پھر بھی نیٹ ورک کی پالیسیوں اور خفیہ کاری کو سپورٹ نہیں کرتا ہے۔

Romana اب تعاون یافتہ نہیں ہے، اس لیے ہم نے اسے بینچ مارک سے ہٹا دیا ہے۔

WeaveNet اب Ingress اور Egress کے لیے نیٹ ورک کی پالیسیوں کی حمایت کرتا ہے! لیکن پیداواری صلاحیت میں کمی آئی ہے۔

Calico میں، آپ کو اب بھی بہترین کارکردگی کے لیے زیادہ سے زیادہ پیکٹ سائز (MTU) کو دستی طور پر ترتیب دینے کی ضرورت ہے۔ CNI انسٹال کرنے کے لیے Calico دو اختیارات پیش کرتا ہے، لہذا آپ علیحدہ ETCD ذخیرہ کے بغیر کر سکتے ہیں:

  • Kubernetes API میں ڈیٹا سٹور کے طور پر سٹور کرنے کی حالت (کلسٹر سائز <50 نوڈس)؛
  • K8S API (کلسٹر سائز> 50 نوڈس) پر بوجھ کو دور کرنے کے لیے کوبرنیٹس API میں ڈیٹا اسٹور کے طور پر ایک Typha پراکسی کے ساتھ اسٹیٹ کو اسٹور کرنا۔

کیلیکو نے حمایت کا اعلان کیا۔ درخواست کی سطح کی پالیسیاں درخواست کی سطح کی سیکیورٹی کے لیے Istio کے اوپر۔

Cilium اب خفیہ کاری کی حمایت کرتا ہے! Cilium IPSec سرنگوں کے ساتھ خفیہ کاری فراہم کرتا ہے اور انکرپٹڈ WeaveNet نیٹ ورک کا متبادل پیش کرتا ہے۔ لیکن WeaveNet Cilium سے تیز ہے جس میں انکرپشن فعال ہے۔

بلٹ ان ETCD آپریٹر کی بدولت Cilium کو تعینات کرنا اب آسان ہے۔

Cilium ٹیم نے میموری کی کھپت اور CPU کے اخراجات کو کم کرکے اپنے CNI سے کچھ وزن کم کرنے کی کوشش کی ہے، لیکن اس کے حریف اب بھی ہلکے ہیں۔

بینچ مارک سیاق و سباق

بینچ مارک 10 جی بی سپر مائیکرو سوئچ کے ساتھ تین نان ورچوئلائزڈ سپر مائیکرو سرورز پر چلتا ہے۔ سرورز غیر فعال DAC SFP+ کیبلز کے ذریعے براہ راست سوئچ سے جڑے ہوئے ہیں اور جمبو فریم (MTU 9000) کے ساتھ اسی VLAN پر کنفیگر کیے گئے ہیں۔

Docker 1.14.0 کے ساتھ Ubuntu 18.04 LTS پر Kubernetes 18.09.2 انسٹال ہوا (اس ریلیز میں پہلے سے طے شدہ Docker ورژن)۔

تولیدی صلاحیت کو بہتر بنانے کے لیے، ہم نے ہمیشہ ماسٹر کو پہلے نوڈ پر کنفیگر کرنے کا فیصلہ کیا، بینچ مارک کا سرور حصہ دوسرے سرور پر اور کلائنٹ کا حصہ تیسرے پر رکھیں۔ ایسا کرنے کے لیے، ہم Kubernetes کی تعیناتیوں میں NodeSelector استعمال کرتے ہیں۔

ہم درج ذیل پیمانے پر بینچ مارک کے نتائج بیان کریں گے:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

بینچ مارک کے لیے CNI کا انتخاب کرنا

یہ سیکشن میں دی گئی فہرست سے صرف CNI کے لیے ایک بینچ مارک ہے۔ kubeadm کے ساتھ ایک ماسٹر کلسٹر بنانے کے بارے میں کوبرنیٹس کی سرکاری دستاویزات دیکھیں۔ 9 CNIs میں سے، ہم صرف 6 لیں گے: ہم ان کو خارج کر دیں گے جنہیں انسٹال کرنا مشکل ہے اور/یا دستاویزات کے مطابق کنفیگریشن کے بغیر کام نہیں کرتے ہیں (Romana، Contiv-VPP اور JuniperContrail/TungstenFabric)۔

ہم درج ذیل CNIs کا موازنہ کریں گے۔

  • کیلیکو v3.6
  • کینال v3.6 (نیٹ ورکنگ کے لیے بنیادی طور پر فلالین + کیلیکو بطور فائر وال)
  • سیلیم 1.4.2
  • فلالین 0.11.0
  • کیوب روٹر 0.2.5
  • WeaveNet 2.5.1

تنصیب

CNI کو انسٹال کرنا جتنا آسان ہوگا، ہمارا پہلا تاثر اتنا ہی بہتر ہوگا۔ بینچ مارک سے تمام CNIs انسٹال کرنا بہت آسان ہیں (ایک یا دو کمانڈز کے ساتھ)۔

جیسا کہ ہم نے کہا، سرورز اور سوئچ جمبو فریموں کے ساتھ کنفیگر کیے گئے ہیں (ہم نے MTU کو 9000 پر سیٹ کیا ہے)۔ ہمیں خوشی ہو گی اگر CNI خود بخود ایڈاپٹرز کی ترتیب کی بنیاد پر MTU کا تعین کرے۔ تاہم، صرف Cilium اور Flannel نے اس کا انتظام کیا۔ باقی CNIs کے پاس GitHub پر خودکار MTU دریافت شامل کرنے کی درخواستیں ہیں، لیکن ہم کیلیکو، کینال اور کیوب روٹر کے لیے ConfigMap کو تبدیل کر کے، یا WeaveNet کے لیے ماحولیاتی متغیر کو پاس کر کے اسے دستی طور پر ترتیب دیں گے۔

غلط MTU میں کیا مسئلہ ہے؟ یہ خاکہ پہلے سے طے شدہ MTU اور جمبو فریمز کے ساتھ WeaveNet کے درمیان فرق کو ظاہر کرتا ہے:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
MTU کس طرح تھرو پٹ کو متاثر کرتا ہے؟

ہم نے دیکھا ہے کہ کارکردگی کے لیے MTU کتنا اہم ہے، اب دیکھتے ہیں کہ ہمارے CNI خود بخود اس کا تعین کیسے کرتے ہیں:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
CNI خود بخود MTU کا پتہ لگاتا ہے۔

گراف دکھاتا ہے کہ آپ کو بہترین کارکردگی کے لیے کیلیکو، کینال، کیوب روٹر اور ویو نیٹ کے لیے MTU کو ترتیب دینے کی ضرورت ہے۔ Cilium اور Flannel بغیر کسی ترتیب کے خود MTU کا درست تعین کرنے میں کامیاب تھے۔

سیکورٹی

ہم CNI سیکیورٹی کا دو پہلوؤں سے موازنہ کریں گے: منتقل شدہ ڈیٹا کو انکرپٹ کرنے کی صلاحیت اور Kubernetes نیٹ ورک کی پالیسیوں کا نفاذ (حقیقی ٹیسٹوں پر مبنی، دستاویزات پر نہیں)۔

صرف دو CNIs ڈیٹا کو خفیہ کرتے ہیں: Cilium اور WeaveNet۔ خفیہ کاری ویو نیٹ انکرپشن پاس ورڈ کو CNI ماحولیاتی متغیر کے طور پر ترتیب دے کر فعال کیا گیا۔ میں دستاویزات WeaveNet اسے ایک پیچیدہ انداز میں بیان کرتا ہے، لیکن سب کچھ سادگی سے کیا جاتا ہے۔ خفیہ کاری سیلیم کمانڈز کے ذریعے ترتیب دیا گیا، Kubernetes کے رازوں کو بنا کر، اور ڈیمون سیٹ میں ترمیم کے ذریعے (WeaveNet کے مقابلے میں تھوڑا زیادہ پیچیدہ، لیکن Cilium میں مرحلہ وار ہدایات).

جہاں تک نیٹ ورک پالیسی کے نفاذ کا تعلق ہے، وہ کامیاب ہو گئے ہیں۔ کیلیکو، کینال، سیلیم اور ویو نیٹ، جس میں آپ Ingress اور Egress کے قواعد کو ترتیب دے سکتے ہیں۔ کے لیے کیوب روٹر صرف داخلے کے اصول ہیں، اور فلالین نیٹ ورک کی کوئی پالیسیاں نہیں ہیں۔

یہاں مجموعی نتائج ہیں:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
حفاظتی کارکردگی کے بینچ مارک کے نتائج

کارکردگی

یہ بینچ مارک ہر ٹیسٹ کے کم از کم تین رنز پر اوسط تھرو پٹ دکھاتا ہے۔ ہم TCP اور UDP (iperf3 کا استعمال کرتے ہوئے)، حقیقی ایپلی کیشنز جیسے HTTP (Nginx اور curl کے ساتھ) یا FTP (vsftpd اور curl کے ساتھ) اور آخر میں SCP پر مبنی انکرپشن (کلائنٹ اور سرور OpenSSH کا استعمال کرتے ہوئے) کا استعمال کرتے ہوئے ایپلیکیشن کی کارکردگی کی جانچ کرتے ہیں۔

تمام ٹیسٹوں کے لیے، ہم نے CNI کی کارکردگی کا مقامی نیٹ ورک کی کارکردگی سے موازنہ کرنے کے لیے ایک ننگی دھاتی بینچ مارک (گرین لائن) کا مظاہرہ کیا۔ یہاں ہم ایک ہی پیمانے کا استعمال کرتے ہیں، لیکن رنگ میں:

  • پیلا = بہت اچھا
  • اورنج = اچھا
  • نیلا = اتنا
  • سرخ = برا

ہم غلط طریقے سے تشکیل شدہ CNIs نہیں لیں گے اور صرف درست MTU والے CNIs کے نتائج دکھائیں گے۔ (نوٹ: اگر آپ خفیہ کاری کو فعال کرتے ہیں تو Cilium صحیح طریقے سے MTU کا حساب نہیں لگاتا، لہذا آپ کو ورژن 8900 میں MTU کو دستی طور پر 1.4 تک کم کرنا پڑے گا۔ اگلا ورژن، 1.5، یہ خود بخود کرتا ہے۔)

نتائج یہ ہیں:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
TCP کارکردگی

تمام CNIs نے TCP بینچ مارک میں اچھی کارکردگی کا مظاہرہ کیا۔ خفیہ کاری کے ساتھ CNI بہت پیچھے رہ جاتا ہے کیونکہ انکرپشن مہنگا ہے۔

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
UDP کارکردگی

یہاں بھی، تمام سی این آئیز اچھی کارکردگی کا مظاہرہ کر رہے ہیں۔ خفیہ کاری کے ساتھ CNI نے تقریبا ایک ہی نتیجہ دکھایا۔ Cilium مقابلے میں تھوڑا پیچھے ہے، لیکن یہ ننگی دھات کا صرف 2,3% ہے، اس لیے یہ کوئی برا نتیجہ نہیں ہے۔ یہ نہ بھولیں کہ صرف Cilium اور Flannel نے خود MTU کا درست تعین کیا، اور یہ بغیر کسی اضافی ترتیب کے ان کے نتائج ہیں۔

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

ایک حقیقی درخواست کے بارے میں کیا خیال ہے؟ جیسا کہ آپ دیکھ سکتے ہیں، HTTP کے لیے مجموعی کارکردگی TCP کے مقابلے میں قدرے کم ہے۔ یہاں تک کہ اگر آپ TCP کے ساتھ HTTP کا استعمال کرتے ہیں، تو ہم نے ٹی سی پی بینچ مارک میں iperf3 کو ترتیب دیا ہے تاکہ سست آغاز سے بچنے کے لیے جو HTTP بینچ مارک کو متاثر کرے۔ یہاں سب نے اچھا کام کیا۔ Kube-router کا واضح فائدہ ہے، لیکن WeaveNet نے اچھی کارکردگی نہیں دکھائی: ننگی دھات سے تقریباً 20% بدتر۔ Cilium اور WeaveNet انکرپشن کے ساتھ واقعی اداس نظر آتے ہیں۔

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

FTP کے ساتھ، ایک اور TCP پر مبنی پروٹوکول، نتائج مختلف ہوتے ہیں۔ فلالین اور کیوب روٹر کام کرتے ہیں، لیکن کیلیکو، کینال اور سیلیم تھوڑا پیچھے ہیں اور ننگی دھات سے تقریباً 10 فیصد سست ہیں۔ WeaveNet 17% تک پیچھے ہے، لیکن انکرپٹڈ WeaveNet انکرپٹڈ Cilium سے 40% آگے ہے۔

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

SCP کے ساتھ ہم فوری طور پر دیکھ سکتے ہیں کہ SSH انکرپشن پر ہمیں کتنا خرچ آتا ہے۔ تقریباً تمام CNIs اچھا کام کر رہے ہیں، لیکن WeaveNet ایک بار پھر پیچھے ہے۔ Cilium اور WeaveNet with Encryption متوقع طور پر ڈبل انکرپشن (SSH + CNI) کی وجہ سے بدترین ہیں۔

یہاں نتائج کے ساتھ ایک خلاصہ ٹیبل ہے:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

وسائل کی کھپت

اب آئیے موازنہ کریں کہ CNI کس طرح بھاری بوجھ کے تحت وسائل استعمال کرتا ہے (TCP ٹرانسفر کے دوران، 10 Gbps)۔ کارکردگی کے ٹیسٹ میں ہم CNI کا موازنہ ننگی دھات (گرین لائن) سے کرتے ہیں۔ وسائل کے استعمال کے لیے، آئیے بغیر CNI کے خالص Kubernetes (جامنی لکیر) دکھائیں اور دیکھیں کہ CNI کتنے اضافی وسائل استعمال کرتا ہے۔

آئیے میموری کے ساتھ شروع کرتے ہیں۔ منتقلی کے دوران MB میں نوڈس کی RAM (بفرز اور کیشے کو چھوڑ کر) کی اوسط قدر یہ ہے۔

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
میموری کی کھپت

فلالین اور کیوب روٹر نے بہترین نتائج دکھائے - صرف 50 ایم بی۔ کیلیکو اور کینال میں سے ہر ایک کے پاس 70 ہیں۔ WeaveNet واضح طور پر دوسروں سے زیادہ استعمال کرتا ہے - 130 MB، اور Cilium زیادہ سے زیادہ 400 استعمال کرتا ہے۔
اب آئیے سی پی یو کے وقت کی کھپت کو چیک کریں۔ قابل ذکر: خاکہ فیصد نہیں دکھاتا ہے، لیکن ppm، یعنی "ننگے لوہے" کے لیے 38 ppm 3,8% ہے۔ نتائج یہ ہیں:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
سی پی یو کی کھپت

Calico، Canal، Flannel اور Kube-router بہت CPU موثر ہیں - بغیر CNI کے Kubernetes سے صرف 2% زیادہ۔ WeaveNet اضافی 5% کے ساتھ بہت پیچھے ہے، اس کے بعد Cilium 7% پر ہے۔

یہاں وسائل کی کھپت کا خلاصہ ہے:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)

کے نتائج

تمام نتائج کے ساتھ جدول:

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
عام معیار کے نتائج

حاصل يہ ہوا

آخری حصے میں میں نتائج پر اپنی موضوعی رائے کا اظہار کروں گا۔ یاد رکھیں کہ یہ بینچ مارک بہت چھوٹے کلسٹر (3 نوڈس) پر صرف ایک کنکشن کے تھرو پٹ کی جانچ کرتا ہے۔ یہ بڑے کلسٹرز (<50 نوڈس) یا متوازی کنکشن پر لاگو نہیں ہوتا ہے۔

میں منظر نامے کے لحاظ سے درج ذیل CNIs استعمال کرنے کی تجویز کرتا ہوں:

  • کیا آپ کے کلسٹر میں ہے؟ چند وسائل کے ساتھ نوڈس (کئی جی بی ریم، کئی کور) اور آپ کو حفاظتی خصوصیات کی ضرورت نہیں ہے - منتخب کریں۔ فلالین. یہ سب سے زیادہ سرمایہ کاری مؤثر CNIs میں سے ایک ہے۔ اور یہ مختلف قسم کے آرکیٹیکچرز (amd64، arm، arm64، وغیرہ) کے ساتھ مطابقت رکھتا ہے۔ اس کے علاوہ، یہ دو میں سے ایک ہے (دوسرا Cilium ہے) CNI جو خود بخود MTU کا تعین کر سکتا ہے، لہذا آپ کو کچھ بھی ترتیب دینے کی ضرورت نہیں ہے۔ کیوب روٹر بھی موزوں ہے، لیکن یہ معیاری نہیں ہے اور آپ کو ایم ٹی یو کو دستی طور پر ترتیب دینے کی ضرورت ہوگی۔
  • اگر ضرورت ہو۔ نیٹ ورک کو خفیہ کریں حفاظت کے لئے، لے لو ویو نیٹ. اگر آپ جمبو فریم استعمال کر رہے ہیں تو MTU سائز بتانا نہ بھولیں، اور ماحولیاتی متغیر کے ذریعے پاس ورڈ بتا کر انکرپشن کو فعال کریں۔ لیکن کارکردگی کے بارے میں بھول جانا بہتر ہے - یہ انکرپشن کی قیمت ہے۔
  • کے لیے عام استعمال میں مشورہ دیتا ہوں۔ کیلیکو۔. یہ CNI وسیع پیمانے پر مختلف Kubernetes تعیناتی ٹولز (Kops، Kubespray، Rancher، وغیرہ) میں استعمال ہوتا ہے۔ WeaveNet کی طرح، جمبو فریم استعمال کرنے پر ConfigMap میں MTU کو کنفیگر کرنا یقینی بنائیں۔ یہ ایک ملٹی فنکشنل ٹول ہے جو وسائل کی کھپت، کارکردگی اور سیکورٹی کے لحاظ سے موثر ہے۔

اور آخر میں، میں آپ کو ترقی کی پیروی کرنے کا مشورہ دیتا ہوں سیلیم. اس CNI کے پاس ایک بہت فعال ٹیم ہے جو اپنی مصنوعات (خصوصیات، وسائل کی بچت، کارکردگی، سیکورٹی، کلسٹرنگ...) پر بہت کام کرتی ہے اور ان کے پاس بہت دلچسپ منصوبے ہیں۔

Kubernetes Network Plugin (CNI) بینچ مارک کے نتائج 10 Gbps نیٹ ورک سے زیادہ (اپ ڈیٹ شدہ: اپریل 2019)
CNI انتخاب کے لیے بصری خاکہ

ماخذ: www.habr.com

نیا تبصرہ شامل کریں