آپ کو کبرنیٹس کی ضرورت نہیں ہوسکتی ہے۔

آپ کو کبرنیٹس کی ضرورت نہیں ہوسکتی ہے۔
سکوٹر پر لڑکی۔ مثال freepik، خانہ بدوش لوگو سے ہاشی کارپ

Kubernetes کنٹینر آرکیسٹریشن کا 300 پاؤنڈ گوریلا ہے۔ یہ دنیا کے سب سے بڑے کنٹینر سسٹمز میں کام کرتا ہے، لیکن مہنگا ہے۔

خاص طور پر چھوٹی ٹیموں کے لیے مہنگا، جس کے لیے بہت زیادہ سپورٹ ٹائم اور سیکھنے کا ایک تیز وکر درکار ہوگا۔ یہ ہماری چار کی ٹیم کے لیے بہت زیادہ ہے۔ لہذا ہم نے متبادل تلاش کرنا شروع کیا - اور اس سے پیار ہو گیا۔ گھمککڑ.

تم کیا چاہتے ہو

ہماری ٹیم متعدد مشترکہ کارکردگی کی نگرانی اور تجزیہ کی خدمات کو سپورٹ کرتی ہے: گو میں لکھے گئے میٹرکس کے لیے API کے اختتامی نکات، پرومیتھیس برآمدات، لاگ پارسر جیسے Logstash اور گوولم، نیز ڈیٹا بیس جیسے InfluxDB یا Elasticsearch۔ ان میں سے ہر ایک سروس اپنے کنٹینر میں چلتی ہے۔ ہمیں یہ سب چلانے کے لیے ایک سادہ نظام کی ضرورت ہے۔

ہم نے کنٹینر آرکیسٹریشن کی ضروریات کی فہرست کے ساتھ آغاز کیا:

  • کئی مشینوں پر خدمات کا ایک سیٹ چلانا۔
  • چلانے والی خدمات کا جائزہ۔
  • خدمات کے درمیان روابط۔
  • اگر سروس بند ہوجاتی ہے تو خود کار طریقے سے دوبارہ شروع کریں۔
  • ایک چھوٹی ٹیم کے ذریعہ انفراسٹرکچر کی دیکھ بھال۔

اس کے علاوہ، درج ذیل چیزیں اچھی ہوں گی، لیکن ضروری اضافے نہیں:

  • مشینوں کو ان کی صلاحیتوں کی بنیاد پر ٹیگ کرنا (مثال کے طور پر بھاری I/O خدمات کے لیے تیز ڈسک کے ساتھ مشینوں کو ٹیگ کرنا)۔
  • آرکیسٹریٹر سے آزادانہ طور پر خدمات چلانے کی اہلیت (مثال کے طور پر، ترقی کے دوران)۔
  • کنفیگریشنز اور راز بانٹنے کے لیے ایک عام جگہ۔
  • میٹرکس اور لاگز کے لیے اختتامی نقطہ۔

کبرنیٹس ہمارے لیے صحیح کیوں نہیں ہے۔

جیسا کہ ہم نے Kubernetes کے ساتھ پروٹو ٹائپ کیا، ہم نے دیکھا کہ ہم منطق کی تیزی سے پیچیدہ پرتیں شامل کر رہے ہیں جن پر ہم بہت زیادہ انحصار کرتے ہیں۔

مثال کے طور پر، Kubernetes بلٹ ان سروس کنفیگریشن کے ذریعے سپورٹ کرتا ہے۔ کنفیگ میپس. آپ جلدی سے الجھ سکتے ہیں، خاص طور پر جب متعدد کنفیگریشن فائلوں کو ضم کر رہے ہوں یا پوڈ میں اضافی خدمات شامل کریں۔ کبرنیٹس (یا پتوار اس صورت میں) آپ کو خدشات کو الگ کرنے کے لیے بیرونی کنفیگریشنز کو متحرک طور پر لاگو کرنے کی اجازت دیتا ہے۔ لیکن اس کے نتیجے میں آپ کے پروجیکٹ اور کوبرنیٹس کے درمیان ایک سخت، پوشیدہ جوڑا پیدا ہوتا ہے۔ تاہم، Helm اور ConfigMaps اضافی اختیارات ہیں، لہذا آپ کو انہیں استعمال کرنے کی ضرورت نہیں ہے۔ آپ آسانی سے کنفیگریشن کو ڈوکر امیج میں کاپی کر سکتے ہیں۔ تاہم، اس راستے پر چلنا اور غیر ضروری تجریدات بنانا پرکشش ہے جس پر آپ کو بعد میں پچھتانا پڑے گا۔

مزید برآں، Kubernetes ماحولیاتی نظام تیزی سے تیار ہو رہا ہے۔ بہترین طریقوں اور جدید ترین ٹولز کے ساتھ اپ ٹو ڈیٹ رہنے میں کافی وقت اور توانائی درکار ہوتی ہے۔ Kubectl, minikube, kubeadm, helm, tiller, kops, oc - فہرست جاری و ساری ہے۔ جب آپ شروعات کر رہے ہوتے ہیں تو ان تمام ٹولز کی ضرورت نہیں ہوتی ہے، لیکن آپ نہیں جانتے کہ آپ کو کس چیز کی ضرورت ہوگی، اس لیے آپ کو ہر چیز سے آگاہ ہونے کی ضرورت ہے۔ اس کی وجہ سے، سیکھنے کی وکر کافی کھڑی ہے.

کبرنیٹس کا استعمال کب کریں۔

ہماری کمپنی میں، بہت سے لوگ Kubernetes استعمال کرتے ہیں اور اس سے کافی خوش ہیں۔ یہ مثالیں Google یا Amazon کے زیر انتظام ہیں، جن کے پاس ان کی مدد کے لیے وسائل ہیں۔

Kubernetes کے ساتھ آتا ہے حیرت انگیز خصوصیات، جو پیمانے پر کنٹینر آرکیسٹریشن کو زیادہ قابل انتظام بناتے ہیں:

  • تفصیلی حقوق کا انتظام.
  • حسب ضرورت کنٹرولرز کلسٹر میں منطق شامل کریں۔ یہ صرف وہ پروگرام ہیں جو Kubernetes API سے بات کرتے ہیں۔
  • آٹو اسکیلنگ! Kubernetes سروس میٹرکس کا استعمال کرتے ہوئے اور دستی مداخلت کی ضرورت کے بغیر خدمات کو ڈیمانڈ پر سکیل کر سکتے ہیں۔

سوال یہ ہے کہ کیا آپ کو واقعی ان تمام خصوصیات کی ضرورت ہے۔ آپ صرف تجریدات پر انحصار نہیں کر سکتے۔ آپ کو یہ معلوم کرنا پڑے گا کہ ہڈ کے نیچے کیا ہو رہا ہے۔.

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

بیٹریاں شامل نہیں ہیں۔

خانہ بدوش آرکیسٹریشن کا 20% ہے جو ضرورت کا 80% فراہم کرتا ہے۔ یہ صرف تعیناتیوں کا انتظام کرتا ہے۔ Nomad تعیناتیوں کا خیال رکھتا ہے، غلطیوں کی صورت میں کنٹینرز کو دوبارہ شروع کرتا ہے... اور بس۔

خانہ بدوش کا سارا نقطہ یہ ہے کہ یہ کیا کرتا ہے۔ کم سے کم: کوئی دانے دار حقوق کا انتظام یا توسیعی نیٹ ورک کی پالیسیاں، یہ خاص طور پر ڈیزائن کیا گیا ہے۔ یہ اجزاء بیرونی طور پر فراہم کیے جاتے ہیں یا بالکل نہیں۔

میرے خیال میں Nomad نے استعمال میں آسانی اور افادیت کے درمیان کامل سمجھوتہ پایا ہے۔ یہ چھوٹی، آزاد خدمات کے لیے اچھا ہے۔ اگر آپ کو مزید کنٹرول کی ضرورت ہے، تو آپ کو انہیں خود بڑھانا ہوگا یا کوئی مختلف طریقہ استعمال کرنا ہوگا۔ خانہ بدوش ہے۔ صرف آرکیسٹریٹر

Nomad کے بارے میں سب سے اچھی بات یہ ہے کہ یہ آسان ہے۔ تبدیل کریں. وینڈر سے عملی طور پر کوئی تعلق نہیں ہے، کیونکہ اس کے افعال آسانی سے کسی دوسرے سسٹم میں ضم ہوجاتے ہیں جو خدمات کا انتظام کرتا ہے۔ یہ کلسٹر میں ہر مشین پر ایک باقاعدہ بائنری کی طرح چلتا ہے، بس!

ڈھیلے جوڑے ہوئے اجزاء کا خانہ بدوش ماحولیاتی نظام

خانہ بدوش کی اصل طاقت اس کا ماحولیاتی نظام ہے۔ یہ دیگر - مکمل طور پر اختیاری - جیسے مصنوعات کے ساتھ بہت اچھی طرح سے مربوط ہے۔ قونصل (کلیدی قدر کی دکان) یا والٹ (پراسیسنگ راز) Nomad فائل کے اندر ان خدمات سے ڈیٹا نکالنے کے حصے ہیں:

template {
  data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH

  destination = "secrets/file.env"
  env         = true
}

یہاں ہم کلید پڑھتے ہیں۔ service/geo-api/log-verbosity قونصل سے اور آپریشن کے دوران اسے ماحول کے متغیر سے بے نقاب کریں۔ LOG_LEVEL. ہم چابی بھی پیش کرتے ہیں۔ secret/geo-api-key والٹ سے بطور API_KEY. سادہ لیکن طاقتور!

اس کی سادگی کی وجہ سے، Nomad آسانی سے API کے ذریعے دیگر خدمات کے ساتھ قابل توسیع ہے۔ مثال کے طور پر، کاموں کے لیے ٹیگز کی حمایت کی جاتی ہے۔ ہم تمام سروسز کو میٹرکس کے ساتھ ٹیگ کرتے ہیں۔ trv-metrics. اس طرح پرومیتھیس ان خدمات کو قونصل کے ذریعے آسانی سے تلاش کر سکتا ہے اور وقتاً فوقتاً اینڈ پوائنٹ کو چیک کر سکتا ہے۔ /metrics نئے ڈیٹا کے لیے۔ ایک ہی کیا جا سکتا ہے، مثال کے طور پر، نوشتہ جات کے لئے، استعمال کرتے ہوئے لوکی.

توسیع پذیری کی بہت سی دوسری مثالیں ہیں:

  • ہک کا استعمال کرتے ہوئے جینکنز جاب چلائیں، اور سروس کنفیگریشن تبدیل ہونے پر قونصل خانہ نومڈ جاب کی دوبارہ تعیناتی کی نگرانی کرتا ہے۔
  • Ceph Nomad میں تقسیم شدہ فائل سسٹم کا اضافہ کرتا ہے۔
  • fabio بوجھ کے توازن کے لیے۔

یہ سب اجازت دیتا ہے۔ نامیاتی طور پر بنیادی ڈھانچے کی ترقی وینڈر سے کسی خاص تعلق کے بغیر۔

منصفانہ انتباہ

کوئی بھی نظام کامل نہیں ہے۔ میں فوری طور پر جدید ترین خصوصیات کو پروڈکشن میں متعارف کرانے کی سفارش نہیں کرتا ہوں۔ بلاشبہ کیڑے اور لاپتہ خصوصیات ہیں، لیکن یہی بات Kubernetes پر لاگو ہوتی ہے۔

Kubernetes کے مقابلے میں، خانہ بدوش کمیونٹی اتنی بڑی نہیں ہے۔ Kubernetes کے پاس پہلے ہی تقریباً 75 کمٹ اور 000 کنٹریبیوٹرز ہیں، جبکہ Nomad کے پاس تقریباً 2000 کمٹ اور 14 کنٹریبیوٹرز ہیں۔ خانہ بدوش کو کبرنیٹس کی رفتار کو برقرار رکھنے میں مشکل پیش آئے گی، لیکن شاید اس کی ضرورت نہیں ہے! یہ ایک زیادہ مخصوص نظام ہے، اور چھوٹی کمیونٹی کا مطلب یہ بھی ہے کہ آپ کی پل کی درخواست کو کبرنیٹس کے مقابلے میں دیکھا اور قبول کیے جانے کا زیادہ امکان ہے۔

خلاصہ

نیچے کی سطر: Kubernetes کو صرف اس لیے استعمال نہ کریں کہ باقی سب یہ کر رہے ہیں۔ اپنی ضروریات کا بغور جائزہ لیں اور چیک کریں کہ کون سا ٹول زیادہ فائدہ مند ہے۔

اگر آپ بڑے پیمانے پر انفراسٹرکچر پر ایک ٹن یکساں خدمات کو تعینات کرنے کا ارادہ رکھتے ہیں، تو Kubernetes ایک اچھا آپشن ہے۔ صرف اضافی پیچیدگی اور آپریٹنگ اخراجات سے آگاہ رہیں۔ کچھ اخراجات کو ایک منظم Kubernetes ماحول کا استعمال کرتے ہوئے سے بچا جا سکتا ہے جیسے گوگل Kubernetes انجن یا ایمیزون ای کے ایس.

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

اگر Kubernetes کا موازنہ کار سے کیا جائے تو Nomad ایک سکوٹر ہوگا۔ کبھی آپ کو ایک چیز کی ضرورت ہوتی ہے اور کبھی آپ کو دوسری چیز کی ضرورت ہوتی ہے۔ دونوں کو وجود کا حق ہے۔

ماخذ: www.habr.com

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