Kubernetes nodeSelector کیا ہے؟
نوڈ سلیکٹر Kubernetes میں ایک شیڈولنگ کی رکاوٹ ہے جو ایک کلید کی شکل میں ایک نقشہ کی وضاحت کرتی ہے: کلید، ویلیو پیئر کی وضاحت کے لیے ویلیو پیئر کسٹم پوڈ سلیکٹرز اور نوڈ لیبل استعمال کیے جاتے ہیں۔ نوڈ پر لیبل لگا ہوا نوڈ سلیکٹر کلید: ویلیو پیئر سے مماثل ہونا چاہئے تاکہ ایک مخصوص پوڈ کو مخصوص نوڈ پر چلایا جا سکے۔ پوڈ کو شیڈول کرنے کے لیے، نوڈس پر لیبل استعمال کیے جاتے ہیں، اور نوڈ سلیکٹرز پوڈز پر استعمال کیے جاتے ہیں۔ اوپن شفٹ کنٹینر پلیٹ فارم نوڈ سلیکٹر کا استعمال کرتے ہوئے نوڈس پر پوڈز کو لیبلز سے ملا کر شیڈول کرتا ہے۔
مزید برآں، لیبلز اور نوڈ سلیکٹر کو یہ کنٹرول کرنے کے لیے استعمال کیا جاتا ہے کہ مخصوص نوڈ پر کون سا پوڈ شیڈول کیا جانا ہے۔ جب آپ لیبلز اور نوڈ سلیکٹر استعمال کرتے ہیں تو پہلے نوڈ پر لیبل لگائیں تاکہ پوڈس کو ڈیشیڈول نہ کیا جائے اور پھر نوڈ سلیکٹر کو پوڈ میں شامل کریں۔ ایک مخصوص نوڈ پر ایک مخصوص پوڈ رکھنے کے لیے، نوڈ سلیکٹر استعمال کیا جاتا ہے، جبکہ کلسٹر وائیڈ نوڈ سلیکٹر آپ کو کلسٹر میں کہیں بھی موجود ایک مخصوص نوڈ پر ایک نیا پوڈ لگانے کی اجازت دیتا ہے۔ پروجیکٹ نوڈ سلیکٹر کا استعمال نئے پوڈ کو پروجیکٹ میں کسی خاص نوڈ پر کرنے کے لیے کیا جاتا ہے۔
شرطیں
Kubernetes nodeSelector استعمال کرنے کے لیے، یقینی بنائیں کہ آپ کے سسٹم میں درج ذیل ٹولز انسٹال ہیں:
- Ubuntu 20.04 یا کوئی دوسرا تازہ ترین ورژن
- کم از کم ایک ورکر نوڈ کے ساتھ Minikube کلسٹر
- Kubectl کمانڈ لائن ٹول
اب، ہم اگلے حصے میں جا رہے ہیں جہاں ہم یہ ظاہر کریں گے کہ آپ کبرنیٹس کلسٹر پر نوڈ سلیکٹر کو کس طرح استعمال کر سکتے ہیں۔
کوبرنیٹس میں نوڈ سلیکٹر کنفیگریشن
نوڈ سلیکٹر کا استعمال کرکے ایک پوڈ کو صرف ایک مخصوص نوڈ پر چلانے کے قابل ہونے تک محدود کیا جاسکتا ہے۔ نوڈ سلیکٹر ایک نوڈ سلیکشن رکاوٹ ہے جو پوڈ سپیکیشن PodSpec میں بیان کی گئی ہے۔ سادہ الفاظ میں، نوڈ سلیکٹر ایک شیڈولنگ فیچر ہے جو آپ کو نوڈ پر پوڈ کو شیڈول کرنے کے لیے پوڈ پر کنٹرول فراہم کرتا ہے جس میں نوڈ سلیکٹر لیبل کے لیے صارف کی طرف سے مخصوص کردہ وہی لیبل ہوتا ہے۔ کوبرنیٹس میں نوڈ سلیکٹر کو استعمال کرنے یا کنفیگر کرنے کے لیے، آپ کو منی کیوب کلسٹر کی ضرورت ہے۔ ذیل میں دی گئی کمانڈ کے ساتھ منی کیوب کلسٹر شروع کریں:
> منی کیوب شروع کریں۔
اب جبکہ منی کیوب کلسٹر کامیابی کے ساتھ شروع ہو چکا ہے، ہم Kubernetes میں نوڈ سلیکٹر کی تشکیل کا عمل شروع کر سکتے ہیں۔ اس دستاویز میں ہم آپ کی دو تعیناتیاں بنانے کے لیے رہنمائی کریں گے، ایک بغیر کسی نوڈ سلیکٹر کے اور دوسرا نوڈ سلیکٹر کے ساتھ۔
نوڈ سلیکٹر کے بغیر تعیناتی کو ترتیب دیں۔
سب سے پہلے، ہم ذیل میں دی گئی کمانڈ کا استعمال کرکے ان تمام نوڈس کی تفصیلات نکالیں گے جو اس وقت کلسٹر میں فعال ہیں:
> kubectl نوڈس حاصل کریںیہ کمانڈ کلسٹر میں موجود تمام نوڈس کو نام، حیثیت، کردار، عمر، اور ورژن کے پیرامیٹرز کی تفصیلات کے ساتھ درج کرے گی۔ ذیل میں دیا گیا نمونہ آؤٹ پٹ دیکھیں:
اب، ہم چیک کریں گے کہ کلسٹر میں نوڈس پر کون سے داغ فعال ہیں تاکہ ہم اس کے مطابق نوڈ پر پوڈز کو تعینات کرنے کا منصوبہ بنا سکیں۔ نیچے دی گئی کمانڈ کو نوڈ پر لگائے گئے داغوں کی تفصیل حاصل کرنے کے لیے استعمال کیا جانا ہے۔ نوڈ پر کوئی داغ فعال نہیں ہونا چاہئے تاکہ اس پر پھلی آسانی سے لگائی جاسکے۔ تو آئیے دیکھتے ہیں کہ درج ذیل کمانڈ پر عمل کرتے ہوئے کلسٹر میں کون سے داغ فعال ہیں:
> kubectl وضاحت نوڈس minikube | گرفت داغدار
اوپر دیے گئے آؤٹ پٹ سے، ہم دیکھ سکتے ہیں کہ نوڈ پر کوئی داغ نہیں لگایا گیا ہے، بالکل وہی جو ہمیں نوڈ پر پوڈ لگانے کے لیے درکار ہے۔ اب، اگلا مرحلہ یہ ہے کہ اس میں کسی نوڈ سلیکٹر کی وضاحت کیے بغیر ایک تعیناتی بنائی جائے۔ اس معاملے کے لیے، ہم ایک YAML فائل استعمال کریں گے جہاں ہم نوڈ سلیکٹر کنفیگریشن کو اسٹور کریں گے۔ یہاں منسلک کمانڈ کو YAML فائل کی تخلیق کے لیے استعمال کیا جائے گا:
> نینو deplond.yamlیہاں، ہم نینو کمانڈ کے ساتھ deplond.yaml نامی YAML فائل بنانے کی کوشش کر رہے ہیں۔
اس کمانڈ پر عمل کرنے پر، ہمارے پاس ایک deplond.yaml فائل ہوگی جہاں ہم تعیناتی کنفیگریشن کو اسٹور کریں گے۔ ذیل میں دی گئی تعیناتی کی ترتیب دیکھیں:
اب، ہم تعیناتی کنفیگریشن فائل کا استعمال کرکے تعیناتی بنائیں گے۔ deplond.yaml فائل کو کنفیگریشن بنانے کے لیے 'create' کمانڈ کے ساتھ استعمال کیا جائے گا۔ ذیل میں دی گئی مکمل کمانڈ دیکھیں:
> kubectl بنائیں -f deplond.yaml
جیسا کہ اوپر دکھایا گیا ہے، تعیناتی کامیابی کے ساتھ بنائی گئی ہے لیکن بغیر نوڈ سلیکٹر کے۔ اب، ہم ذیل میں دی گئی کمانڈ کے ساتھ کلسٹر میں پہلے سے دستیاب نوڈس کو چیک کرتے ہیں۔
> kubectl حاصل podsیہ کلسٹر میں دستیاب تمام پوڈز کی فہرست بنائے گا۔ ذیل میں دی گئی آؤٹ پٹ دیکھیں:
اگلا، ہمیں نقل کی گنتی کو تبدیل کرنے کی ضرورت ہے جو deplond.yaml فائل میں ترمیم کرکے کیا جا سکتا ہے۔ بس deplond.yaml فائل کو کھولیں اور نقل کی قدر میں ترمیم کریں۔ یہاں، ہم نقلیں: 3 کو نقل کر رہے ہیں: 30۔ ذیل میں دیے گئے سنیپ شاٹ میں ترمیم دیکھیں:
اب، تبدیلیوں کو تعیناتی کی تعریف فائل سے تعیناتی پر لاگو کرنے کی ضرورت ہے اور یہ مندرجہ ذیل کمانڈ کا استعمال کرکے کیا جا سکتا ہے:
> kubectl لاگو کریں -f deplond.yaml
اب، آئیے -o وسیع آپشن کا استعمال کرکے پوڈز کی مزید تفصیلات چیک کریں:
> kubectl حاصل pods -دی چوڑا
اوپر دیے گئے آؤٹ پٹ سے، ہم دیکھ سکتے ہیں کہ نوڈ پر نئے نوڈس بنتے اور شیڈول کیے جا رہے ہیں کیونکہ کلسٹر سے جو نوڈ ہم استعمال کر رہے ہیں اس پر کوئی داغ ایکٹیو نہیں ہے۔ لہذا، ہمیں خاص طور پر ایک داغ کو چالو کرنے کی ضرورت ہے تاکہ اس بات کو یقینی بنایا جا سکے کہ پوڈز صرف مطلوبہ نوڈ پر طے شدہ ہوں۔ اس کے لیے، ہمیں ماسٹر نوڈ پر لیبل بنانے کی ضرورت ہے:
> kubectl لیبل نوڈس ماسٹر on-master= سچنوڈ سلیکٹر کے ساتھ تعیناتی کو ترتیب دیں۔
نوڈ سلیکٹر کے ساتھ تعیناتی کو ترتیب دینے کے لیے، ہم اسی عمل کی پیروی کریں گے جو بغیر کسی نوڈ سلیکٹر کے تعیناتی کی ترتیب کے لیے کی گئی ہے۔
سب سے پہلے، ہم 'نانو' کمانڈ کے ساتھ ایک YAML فائل بنائیں گے جہاں ہمیں تعیناتی کی ترتیب کو ذخیرہ کرنے کی ضرورت ہے۔
> نینو nd.yamlاب، فائل میں تعیناتی کی تعریف کو محفوظ کریں. آپ کنفیگریشن کی تعریفوں کے درمیان فرق دیکھنے کے لیے دونوں کنفیگریشن فائلوں کا موازنہ کر سکتے ہیں۔
اب، ذیل میں دی گئی کمانڈ کے ساتھ نوڈ سلیکٹر کی تعیناتی بنائیں:
> kubectl بنائیں -f nd.yaml
-o وسیع پرچم کا استعمال کرکے پھلیوں کی تفصیلات حاصل کریں:
> kubectl حاصل pods -دی چوڑا
اوپر دیے گئے آؤٹ پٹ سے، ہم دیکھ سکتے ہیں کہ پوڈز کو منی کیوب نوڈ پر تعینات کیا جا رہا ہے۔ آئیے ہم نقل کی گنتی کو تبدیل کرتے ہیں تاکہ یہ چیک کیا جا سکے کہ کلسٹر میں نئے پوڈ کہاں تعینات ہوتے ہیں۔
درج ذیل کمانڈ کا استعمال کرکے تعیناتی پر نئی تبدیلیاں لاگو کریں:
> kubectl لاگو کریں -f nd.yaml
نتیجہ
اس مضمون میں، ہمارے پاس کبرنیٹس میں نوڈ سلیکٹر کنفیگریشن رکاوٹ کا ایک جائزہ تھا۔ ہم نے سیکھا کہ کبرنیٹس میں نوڈ سلیکٹر کیا ہوتا ہے اور ایک سادہ منظر نامے کی مدد سے ہم نے سیکھا کہ نوڈ سلیکٹر کنفیگریشن رکاوٹوں کے ساتھ اور اس کے بغیر تعیناتی کیسے کی جاتی ہے۔ اگر آپ نوڈ سلیکٹر کے تصور میں نئے ہیں اور تمام متعلقہ معلومات تلاش کر رہے ہیں تو آپ اس مضمون کا حوالہ دے سکتے ہیں۔