مختلف کبرنیٹس کو دوبارہ شروع کرنے کی پالیسیاں کیسے ترتیب دیں۔

Mkhtlf Kbrny S Kw Dwbar Shrw Krn Ky Palysya Kys Trtyb Dy



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

Kubernetes دوبارہ شروع کرنے کی پالیسی کیا ہے؟

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







لاگو کنٹینرز کی سطح پر پالیسی کو دوبارہ شروع کرنے کے لیے، تین اختیارات استعمال کیے جا سکتے ہیں:



ہمیشہ

جب بھی کوئی کنٹینر ختم ہوتا ہے، Kubernetes ایک نیا پیدا کرتا ہے کیونکہ پوڈ کو ہر وقت فعال رہنے کی ضرورت ہوتی ہے۔



ناکامی پر

اگر کنٹینر 0 کے علاوہ واپسی کوڈ کے ساتھ باہر نکلتا ہے، تو یہ صرف ایک بار دوبارہ شروع ہوتا ہے۔ 0 (کامیابی) واپس کرنے والے کنٹینرز کے لیے دوبارہ شروع کرنا ضروری نہیں ہے۔





کبھی نہیں۔

کنٹینر دوبارہ شروع ہونے میں ناکام رہا۔

اب، مندرجہ ذیل حصے میں، ہم اس بات پر بات کریں گے کہ آپ پوڈ کو دوبارہ کیسے شروع کر سکتے ہیں۔



کبرنیٹس میں پوڈ کو دوبارہ شروع کرنے کا طریقہ؟

Kubernetes پوڈ کو دوبارہ شروع کرنے کے لیے، kubectl ٹول کا استعمال کرتے ہوئے کمانڈز جاری کریں۔ یہ KubeAPI سرور کے ساتھ جڑ جائے گا۔ آئیے دستیاب اختیارات کو دریافت کریں:

پوڈ کے اندر کنٹینر کو دوبارہ شروع کرنا

ایک پھلی کئی کنٹینرز رکھ سکتی ہے۔ دوسری طرف، جب آپ اس سے جڑتے ہیں تو آپ بنیادی طور پر پوڈ کے اندر پرائمری کنٹینر سے جڑ جاتے ہیں۔ اگر آپ نے ایک سے زیادہ کنٹینر کی تعریف کی ہے تو آپ ہر ایک کنٹینر سے رابطہ کر سکتے ہیں جس کی آپ نے وضاحت کی ہے۔

آپ ذیل میں ملٹی کنٹینر پوڈ کی تفصیلات کی مثال دیکھ سکتے ہیں:


یہ ایک مشترکہ حجم اور دو کنٹینرز کی وضاحت کرتا ہے۔ HTML فائل کو NGINX کنٹینر کے ذریعہ پیش کیا جائے گا اور ہر سیکنڈ میں Ubuntu کنٹینر HTML فائل میں تاریخ کا ڈاک ٹکٹ شامل کرے گا۔

چونکہ آپ نے یہ نہیں بتایا کہ کون سے کنٹینر سے جڑنا ہے، اس لیے جب آپ اس پوڈ سے جڑنے کی کوشش کریں گے تو یہ خود بخود پہلے والا (NGINX) کا انتخاب کرے گا۔ اسکرین شاٹ ذیل میں منسلک ہے:


اب آپ PID 1 کے عمل کو فی الحال فعال کنٹینر کے اندر ختم کرنے کی کوشش کر سکتے ہیں۔ اس کو پورا کرنے کے لیے درج ذیل کمانڈز کو روٹ کے طور پر چلائیں:


آپ ذیل میں بیان کردہ kubectl ٹول کا بھی استعمال کر سکتے ہیں:


پوڈ کی تفصیلات کے مطابق، K8s اب تباہ شدہ کنٹینر کو دوبارہ شروع کرنے کی کوشش کرے گا۔ اس کے لیے، 'describe' کمانڈ کو اس طرح استعمال کیا جاتا ہے:


مندرجہ بالا کمانڈ کا نتیجہ یہ ہے:


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

اسکیلنگ کے ذریعے پوڈ کو دوبارہ شروع کرنا

پوڈ کی نقل کی گنتی کو 0 تک سکیل کرنا اور پھر اسے 1 تک بڑھانا اسے دوبارہ شروع کرنے کا آسان ترین طریقہ ہے۔ آپ کو اس کے بجائے ایک تعیناتی کی تعمیر کرنی ہوگی کیونکہ اسکیل کمانڈ کو پوڈز پر استعمال نہیں کیا جاسکتا۔ اسے پورا کرنے کا ایک آسان طریقہ یہ ہے:


اس کے بعد 0 اور پھر 1 پر اسکیل کریں۔ ایسا کرنے سے، پوڈ کو ختم کر دیا جائے گا اور پھر کلسٹر میں دوبارہ تعینات کیا جائے گا:


نقلیں 1 پر سیٹ ہیں جیسا کہ آپ اس تصویر میں دیکھ سکتے ہیں۔


تعیناتی کی تفصیلات دیکھنے کے لیے، ہم نے اب 'kubectl get deployments' استعمال کیا ہے۔ کمانڈ اور نتیجہ دونوں کی فہرست درج ذیل ہے۔

پوڈ کو ڈیلیٹ کرکے دوبارہ شروع کرنا

'kubectl حذف' کمانڈ کا استعمال کرتے ہوئے، آپ پوڈ کو حذف کر سکتے ہیں اور پھر اسے دوبارہ لگا سکتے ہیں۔ تاہم، یہ نقطہ نظر بجائے خلل ڈالنے والا ہے، لہذا اس کی سفارش نہیں کی جاتی ہے۔

رول آؤٹ کا استعمال کرتے ہوئے پوڈ کو دوبارہ شروع کرنا

اوپر بیان کیے گئے طریقے کو استعمال کرتے ہوئے پوڈ کو دوبارہ شروع کرنے کے لیے، آپ کو یا تو موجودہ پوڈ کو تباہ کرنا ہوگا اور پھر ایک نیا بنانا ہوگا، یا ریپلیکا کاؤنٹ نیچے اور پھر اوپر کی پیمائش کرنا ہوگی۔ Kubernetes ورژن 1.15 کے ساتھ، آپ رولنگ فیشن میں تعیناتی کو دوبارہ شروع کر سکتے ہیں۔ یہ پوڈ کو دوبارہ شروع کرنے کا تجویز کردہ طریقہ کار ہے۔ شروع کرنے کے لیے بس درج ذیل کمانڈ درج کریں:


اب، اگر آپ کسی مختلف ٹرمینل پر تعیناتی کی صورتحال پر نظر رکھتے ہیں، تو آپ واقعات کے بہاؤ کو حسب ذیل دیکھیں گے:


اگر یہ صحت مند ہے، تو یہ تعیناتی کی پچھلی نقل کو کم کرے گا اور پوڈ کی ایک نئی نقل کو گھمائے گا۔ نتیجہ ایک ہی ہے، سوائے اس نقطہ نظر کے، بنیادی آرکیسٹریشن کوبرنیٹس نے سنبھالا تھا۔

کبرنیٹس پوڈز کو مختلف طریقوں سے دوبارہ کیسے شروع کیا جا سکتا ہے؟

آئیے سب سے پہلے ڈاکر کنٹینر سے شروع کرتے ہیں۔ درج ذیل کمانڈ کے ساتھ، ڈوکر کنٹینرز کو دوبارہ شروع کیا جا سکتا ہے:

> ڈوکر دوبارہ شروع کریں کنٹینر_آئی ڈی

لیکن Kubernetes میں، pods کو دوبارہ شروع کرنے کے لیے کوئی موازنہ کمانڈ نہیں ہے، خاص طور پر اگر کوئی مخصوص YAML فائل نہیں ہے۔ متبادل کے طور پر، آپ kubectl کمانڈز کا استعمال کرتے ہوئے Kubernetes pods کو دوبارہ شروع کر سکتے ہیں۔ درج ذیل کمانڈز درج ہیں:

Kubectl سیٹ Env کمانڈ

ایک طریقہ kubectl سکیل کمانڈ استعمال کرنا ہے۔ یہ پوڈ کی نقل کی تعداد میں ترمیم کرے گا جسے دوبارہ شروع کرنے کی ضرورت ہے۔ ذیل میں ایک مثال کی کمانڈ دی گئی ہے کہ پوڈ میں ریپلیکس کو کیسے دو سیٹ کیا جائے:

> kubectl پیمانے کی تعیناتی پہلی تعیناتی۔ --replicas = 2

رول آؤٹ ری اسٹارٹ کمانڈ

یہاں، ہم یہ ظاہر کریں گے کہ کبرنیٹس پوڈز کو دوبارہ شروع کرنے کے لیے رول آؤٹ ری اسٹارٹ کمانڈ کا استعمال کیسے کیا جائے:

> kubectl رول آؤٹ دوبارہ شروع کریں تعیناتی پہلی تعیناتی۔ -n ڈیمو نام کی جگہ

کنٹرولر سے کہا جاتا ہے کہ وہ کمانڈ کے ذریعہ ہر پوڈ کو انفرادی طور پر ختم کرے۔ اس کے بعد یہ ReplicaSet کا استعمال کرتے ہوئے نئی پھلیوں کو ترازو کرتا ہے۔ جب تک کہ ہر نئی پوڈ ہر موجودہ پوڈ سے زیادہ حالیہ نہیں ہے جب کنٹرولر دوبارہ شروع ہوتا ہے، یہ عمل جاری رہتا ہے۔

ڈیلیٹ پوڈ کمانڈ

یہ سیکشن کبرنیٹس پوڈز کو دوبارہ شروع کرنے کے لیے ہٹانے کی کمانڈ کو استعمال کرنے کے طریقہ پر جائے گا۔ آپ دیکھ سکتے ہیں کہ ہم نے اس تصویر میں پوڈ API آبجیکٹ سے چھٹکارا پانے کے لیے اگلی کمانڈ استعمال کی ہے۔

. > kubectl ڈیلیٹ pod first-pod -n demo_namespace

پوڈ آبجیکٹ کو حذف کرنے سے متوقع ایک کا تضاد ہے کیونکہ Kubernetes API اعلانیہ ہے۔ متوقع کے ساتھ مستقل مزاجی رکھنے کے لیے، اس لیے پھلی کو دوبارہ بنایا جاتا ہے۔

پچھلی کمانڈ کا استعمال کرتے ہوئے ایک وقت میں ایک پوڈ کو دوبارہ شروع کیا جاسکتا ہے۔ متعدد پوڈز کو دوبارہ شروع کرنے کے لیے منسلک کمانڈ سے رجوع کریں:

> kubectl replicaset pods-multiple-n demo_namespace کو حذف کریں۔

مذکورہ کمانڈ ہر پوڈ کو پوڈز کے پورے ریپلیکا سیٹ کو حذف کرکے اور پھر اسے شروع سے بنا کر دوبارہ شروع کرتی ہے۔

نتیجہ

اس پوسٹ نے Kubernetes کے دوبارہ شروع کرنے کی مختلف پالیسیوں کے بارے میں معلومات فراہم کی ہیں۔ ہم نے ہر مرحلے کو نمونے کی مثالوں کی مدد سے واضح کیا۔ نیز، ان کمانڈز کو آزمائیں اور دیکھیں کہ وہ کیا آؤٹ پٹ تیار کرتے ہیں۔