10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

TL؛ ڈاکٹر: تمام CNIs کام کرتے ہیں جیسا کہ انہیں کرنا چاہیے، سوائے Kube-Router اور Kube-OVN، Calico، خودکار MTU پتہ لگانے کے استثنا کے ساتھ، بہترین ہے۔

میرے ماضی کے چیک کے آرٹیکل اپ ڈیٹ (2018 и 2019)، جانچ کے وقت میں Ubuntu 1.19 پر Kubernetes 18.04 کو اگست 2020 تک اپ ڈیٹ شدہ CNIs کے ساتھ استعمال کر رہا ہوں۔

اس سے پہلے کہ ہم میٹرکس میں ڈوب جائیں...

اپریل 2019 سے نیا کیا ہے؟

  • آپ کے اپنے کلسٹر پر ٹیسٹ کر سکتے ہیں: آپ ہمارے ٹول کا استعمال کرتے ہوئے اپنے کلسٹر پر ٹیسٹ چلا سکتے ہیں۔ Kubernetes نیٹ ورک بینچ مارک: knb
  • نئے ممبران سامنے آئے ہیں۔
  • نئے منظرنامے: موجودہ چیک "پوڈ ٹو پوڈ" نیٹ ورک کی کارکردگی کے ٹیسٹ چلاتے ہیں، اور ایک نیا "پوڈ ٹو سروس" اسکرپٹ شامل کیا گیا ہے جو حقیقی دنیا کے حالات کے قریب ٹیسٹ چلاتا ہے۔ عملی طور پر، آپ کا Pod with API بیس کے ساتھ بطور سروس کام کرتا ہے، نہ کہ Pod ip ایڈریس کے ذریعے (یقیناً ہم دونوں منظرناموں کے لیے TCP اور UDP دونوں کو چیک کرتے ہیں)۔
  • وسائل کی کھپت: اب ہر ٹیسٹ کا اپنا وسائل کا موازنہ ہے۔
  • ایپلیکیشن ٹیسٹ کو ہٹانا: ہم اب HTTP، FTP اور SCP ٹیسٹ نہیں کرتے کیونکہ کمیونٹی اور CNI مینٹینرز کے ساتھ ہمارے نتیجہ خیز تعاون نے CNI اسٹارٹ اپ میں تاخیر کی وجہ سے TCP اور curl کے نتائج پر iperf نتائج کے درمیان فرق دریافت کیا ہے (Pod کے پہلے چند سیکنڈز آغاز، جو حقیقی حالات میں عام نہیں ہے)۔
  • اوپن سورس: تمام ٹیسٹ ذرائع (اسکرپٹس، yml سیٹنگز اور اصل "را" ڈیٹا) دستیاب ہیں۔ یہاں

حوالہ ٹیسٹ پروٹوکول

پروٹوکول کو تفصیل سے بیان کیا گیا ہے۔ یہاںبراہ کرم نوٹ کریں کہ یہ مضمون ڈیفالٹ کرنل کے ساتھ اوبنٹو 18.04 کے بارے میں ہے۔

تشخیص کے لیے CNI کا انتخاب کرنا

اس ٹیسٹنگ کا مقصد ایک yaml فائل کے ساتھ کنفیگر کردہ CNIs کا موازنہ کرنا ہے (لہذا، اسکرپٹ کے ذریعے نصب کردہ تمام افراد، جیسے VPP اور دیگر، کو خارج کر دیا گیا ہے)۔

مقابلے کے لیے ہمارے منتخب کردہ CNIs:

  • انٹریا v.0.9.1
  • کیلیکو v3.16
  • Canal v3.16 (Flannel network + Calico نیٹ ورک کی پالیسیاں)
  • سیلیم 1.8.2
  • فلالین 0.12.0
  • Kube-router تازہ ترین (2020-08-25)
  • WeaveNet 2.7.0

CNI کے لیے MTU کو ترتیب دینا

سب سے پہلے، ہم TCP کی کارکردگی پر خودکار MTU پتہ لگانے کے اثرات کو چیک کرتے ہیں:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

TCP کارکردگی پر MTU کا اثر

UDP استعمال کرتے وقت اس سے بھی بڑا فرق پایا جاتا ہے:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)
UDP کارکردگی پر MTU کا اثر

ٹیسٹوں میں ظاہر ہونے والے بہت زیادہ کارکردگی کے اثرات کو دیکھتے ہوئے، ہم تمام CNI مینٹینرز کو امید کا خط بھیجنا چاہیں گے: براہ کرم CNI میں خودکار MTU ڈیٹیکشن شامل کریں۔ آپ بلی کے بچوں، ایک تنگاوالا اور یہاں تک کہ سب سے پیارے کو بھی بچائیں گے: چھوٹا ڈیوپ۔

تاہم، اگر آپ کو خودکار MTU پتہ لگانے کے لیے بغیر سپورٹ کے CNI استعمال کرنے کی ضرورت ہے، تو آپ کارکردگی حاصل کرنے کے لیے اسے دستی طور پر ترتیب دے سکتے ہیں۔ براہ کرم نوٹ کریں کہ یہ کیلیکو، کینال اور ویو نیٹ پر لاگو ہوتا ہے۔

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)
ساتھ والے CNIs سے میری چھوٹی سی گزارش...

CNI ٹیسٹنگ: خام ڈیٹا

اس سیکشن میں، ہم CNI کا درست MTU (خود بخود یا دستی طور پر مقرر) کے ساتھ موازنہ کریں گے۔ یہاں کا بنیادی مقصد خام ڈیٹا کو گراف میں دکھانا ہے۔

رنگ لیجنڈ:

  • سرمئی - نمونہ (یعنی ننگا لوہا)
  • سبز - 9500 Mbps سے اوپر کی بینڈوتھ
  • پیلا - 9000 Mbps سے اوپر کی بینڈوتھ
  • اورنج - بینڈوڈتھ 8000 ایم بی پی ایس سے اوپر
  • سرخ - 8000 Mbps سے نیچے بینڈوڈتھ
  • نیلا - غیر جانبدار (بینڈوڈتھ سے متعلق نہیں)

بغیر بوجھ کے وسائل کی کھپت

سب سے پہلے، وسائل کی کھپت کو چیک کریں جب کلسٹر "سو رہا ہے"۔

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)
بغیر بوجھ کے وسائل کی کھپت

پوڈ ٹو پوڈ

یہ منظر نامہ فرض کرتا ہے کہ کلائنٹ پوڈ اپنے IP ایڈریس کا استعمال کرتے ہوئے سرور پوڈ سے براہ راست جڑتا ہے۔

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)
پوڈ ٹو پوڈ منظر نامہ

ٹی سی پی

Pod-to-Pod TCP کے نتائج اور متعلقہ وسائل کی کھپت:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

UDP

Pod-to-Pod UDP کے نتائج اور متعلقہ وسائل کی کھپت:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

پوڈ ٹو سروس

یہ سیکشن حقیقی استعمال کے معاملات کے لیے متعلقہ ہے، کلائنٹ Pod ClusterIP سروس کے ذریعے سرور Pod سے جڑتا ہے۔

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)
پوڈ ٹو سروس اسکرپٹ

ٹی سی پی

Pod-to-Service TCP کے نتائج اور متعلقہ وسائل کی کھپت:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

UDP

Pod-to-Service UDP کے نتائج اور متعلقہ وسائل کی کھپت:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

نیٹ ورک پالیسی سپورٹ

مندرجہ بالا سب کے درمیان، صرف ایک جو سیاست کی حمایت نہیں کرتا ہے وہ فلالین ہے۔ دیگر سبھی نیٹ ورک کی پالیسیوں کو درست طریقے سے نافذ کرتے ہیں، بشمول ان باؤنڈ اور آؤٹ باؤنڈ۔ بہت اچھا کام!

CNI خفیہ کاری

چیک شدہ CNIs میں وہ ہیں جو Pods کے درمیان نیٹ ورک ایکسچینج کو خفیہ کر سکتے ہیں:

  • انٹریا IPsec کا استعمال کرتے ہوئے
  • کیلیکو وائر گارڈ کا استعمال کر رہا ہے۔
  • IPsec کا استعمال کرتے ہوئے Cilium
  • IPsec کا استعمال کرتے ہوئے WeaveNet

بینڈوڈتھ

چونکہ کم سی این آئی باقی ہیں، آئیے تمام منظرناموں کو ایک گراف میں ڈالتے ہیں:

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

وسائل کی کھپت

اس سیکشن میں، ہم TCP اور UDP میں Pod-to-Pod کمیونیکیشن پر کارروائی کرتے وقت استعمال ہونے والے وسائل کا جائزہ لیں گے۔ Pod-to-Service گراف بنانے کا کوئی فائدہ نہیں ہے کیونکہ یہ اضافی معلومات فراہم نہیں کرتا ہے۔

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

یہ سب ایک ساتھ ڈالنا

آئیے تمام گرافس کو دہرانے کی کوشش کرتے ہیں، ہم نے یہاں تھوڑی سی سبجیکٹیوٹی متعارف کرائی ہے، اصل قدروں کی جگہ لفظ "vwry fast"، "low" وغیرہ۔

10G نیٹ ورک پر Kubernetes کے لیے CNI کارکردگی کا جائزہ (اگست 2020)

نتیجہ اور میرا نتیجہ

یہ تھوڑا سا موضوعی ہے، کیونکہ میں نتائج کی اپنی تشریح کر رہا ہوں۔

مجھے خوشی ہے کہ نئے CNIs نمودار ہوئے، Antrea نے اچھی کارکردگی کا مظاہرہ کیا، ابتدائی ورژن میں بھی بہت سے افعال نافذ کیے گئے: MTU خودکار شناخت، خفیہ کاری اور آسان تنصیب۔

اگر ہم کارکردگی کا موازنہ کریں تو تمام CNIs اچھی طرح کام کرتے ہیں، سوائے Kube-OVN اور Kube-Router کے۔ کیوب راؤٹر بھی ایم ٹی یو کا پتہ لگانے سے قاصر تھا، مجھے دستاویزات میں کہیں بھی اسے ترتیب دینے کا کوئی طریقہ نہیں ملا (یہاں اس موضوع پر ایک درخواست کھلی ہے)۔

وسائل کی کھپت کے لحاظ سے، Cilium اب بھی دوسروں کے مقابلے میں زیادہ RAM استعمال کرتا ہے، لیکن کارخانہ دار واضح طور پر بڑے کلسٹرز کو نشانہ بنا رہا ہے، جو واضح طور پر تین نوڈ کلسٹر پر ٹیسٹ جیسا نہیں ہے۔ Kube-OVN بھی CPU اور RAM کے بہت سارے وسائل استعمال کرتا ہے، لیکن یہ Open vSwitch پر مبنی ایک نوجوان CNI ہے (انٹریا کی طرح، یہ بہتر کارکردگی کا مظاہرہ کرتا ہے اور کم استعمال کرتا ہے)۔

فلانیل کے علاوہ ہر کسی کے پاس نیٹ ورک کی پالیسیاں ہیں۔ یہ بہت ممکن ہے کہ وہ کبھی بھی ان کی حمایت نہیں کرے گا، کیونکہ مقصد ابلی ہوئی شلجم سے آسان ہے: ہلکا، بہتر.

اس کے علاوہ، دوسری چیزوں کے علاوہ، انکرپشن کی کارکردگی حیرت انگیز ہے۔ Calico قدیم ترین CNIs میں سے ایک ہے، لیکن انکرپشن کو صرف چند ہفتے پہلے شامل کیا گیا تھا۔ انہوں نے IPsec کے بجائے وائر گارڈ کا انتخاب کیا، اور سادہ الفاظ میں، یہ بہت اچھا اور حیرت انگیز کام کرتا ہے، جانچ کے اس حصے میں دیگر CNIs کو مکمل طور پر گرہن لگا دیتا ہے۔ بلاشبہ، انکرپشن کی وجہ سے وسائل کی کھپت بڑھ جاتی ہے، لیکن حاصل کردہ تھرو پٹ اس کے قابل ہے (کیلیکو نے Cilium کے مقابلے میں خفیہ کاری کے ٹیسٹ میں چھ گنا بہتری دکھائی، جو دوسرے نمبر پر ہے)۔ مزید برآں، آپ کلسٹر میں Calico کو تعینات کرنے کے بعد کسی بھی وقت وائر گارڈ کو فعال کر سکتے ہیں، اور اگر آپ چاہیں تو آپ اسے مختصر وقت کے لیے یا مستقل طور پر غیر فعال بھی کر سکتے ہیں۔ یہ ناقابل یقین حد تک آسان ہے، اگرچہ! ہم آپ کو یاد دلاتے ہیں کہ Calico فی الحال MTU کا خود بخود پتہ نہیں لگاتا ہے (یہ خصوصیت مستقبل کے ورژنز کے لیے تیار کی گئی ہے)، لہذا اگر آپ کا نیٹ ورک جمبو فریمز (MTU 9000) کو سپورٹ کرتا ہے تو MTU کو کنفیگر کرنا یقینی بنائیں۔

دوسری چیزوں کے علاوہ، نوٹ کریں کہ Cilium ٹریفک کو کلسٹر نوڈس (اور نہ صرف Pods کے درمیان) کے درمیان انکرپٹ کر سکتا ہے، جو کہ عوامی کلسٹر نوڈس کے لیے بہت اہم ہو سکتا ہے۔

ایک نتیجہ کے طور پر، میں مندرجہ ذیل استعمال کے معاملات کا مشورہ دیتا ہوں:

  • ایک بہت چھوٹے کلسٹر کے لیے CNI کی ضرورت ہے یا مجھے سیکیورٹی کی ضرورت نہیں ہے۔: ساتھ مل کر کام فلالین، سب سے ہلکا اور سب سے زیادہ مستحکم CNI (وہ قدیم ترین لوگوں میں سے ایک ہے، لیجنڈ کے مطابق اس کی ایجاد ہومو کوبرناٹس یا ہومو کونٹیٹرس نے کی تھی۔)۔ آپ سب سے ذہین پروجیکٹ میں بھی دلچسپی لے سکتے ہیں۔ k3s، چیک کریں!
  • باقاعدہ کلسٹر کے لیے CNI کی ضرورت ہے۔: کیلیکو۔ - آپ کی پسند، لیکن اگر ضرورت ہو تو MTU کو ترتیب دینا نہ بھولیں۔ آپ آسانی سے اور قدرتی طور پر نیٹ ورک کی پالیسیوں کے ساتھ کھیل سکتے ہیں، خفیہ کاری کو آن اور آف کر سکتے ہیں، وغیرہ۔
  • (بہت) بڑے پیمانے پر کلسٹر کے لیے CNI کی ضرورت ہے۔: ٹھیک ہے، ٹیسٹ بڑے کلسٹرز کے رویے کو ظاہر نہیں کرتا، مجھے ٹیسٹ کرنے میں خوشی ہوگی، لیکن ہمارے پاس 10Gbps کنکشن والے سینکڑوں سرورز نہیں ہیں۔ لہذا بہترین آپشن یہ ہے کہ کم از کم کیلیکو اور سیلیم کے ساتھ اپنے نوڈس پر ایک ترمیم شدہ ٹیسٹ چلائیں۔

ماخذ: www.habr.com

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