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

Kbrny S My Lynks Sysctls Ka Ast Mal Kys Kry



یہ پوسٹ اس بات پر بحث کرے گی کہ کبرنیٹس میں لینکس sysctl کیا ہے اور اسے کبرنیٹس کے کلسٹر میں کیسے استعمال کیا جا سکتا ہے۔ sysctl لینکس آپریٹنگ سسٹم میں ایک انٹرفیس ہے جو منتظم کو رن ٹائم پر کرنل کے پیرامیٹرز میں ترمیم کرنے کے قابل بناتا ہے۔ یہاں، ہم یہ دکھائیں گے کہ کبرنیٹس پلیٹ فارم میں لینکس sysctls استعمال کرنے کا طریقہ۔ ہم آپ کو یہ سمجھنے میں مدد کرنے کے لیے ایک سادہ سی مثال دکھائیں گے کہ Kubernetes میں sysctls استعمال کرنے کے لیے kubectl کمانڈز کو لاگو کرتے وقت آپ کس قسم کے آؤٹ پٹ کی توقع کر سکتے ہیں۔

sysctls کیا ہیں؟

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







شرطیں

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



    • Kubernetes ورژن 1.23 یا کوئی دوسرا تازہ ترین ورژن
    • Ubuntu 20.04 یا کوئی دوسرا تازہ ترین ورژن
    • پوڈ سپورٹ کے لیے Sysctls
    • Kubectl کمانڈ لائن ٹول
    • منی کیوب کلسٹر

یہ فرض کرتے ہوئے کہ آپ کا سسٹم لازمی ضروریات کو پورا کر رہا ہے، ہم نفاذ کے سیکشن میں جا رہے ہیں۔



کبرنیٹس میں لینکس sysctls کا استعمال کیسے کریں؟

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





    • نام کی جگہ بمقابلہ نوڈ لیول sysctls
    • محفوظ بمقابلہ غیر محفوظ نظام

نام کی جگہ بمقابلہ نوڈ لیول sysctls:

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



    • fs.mqueue.*
    • کرنل .msg*
    • kernel.shm*
    • kernel.sem

نوڈ لیول sysctls نام کی جگہ پر نہیں ہیں اور کلسٹر ایڈمنسٹریٹر کو انہیں دستی طور پر سیٹ کرنے کی ضرورت ہے۔ کلسٹر ایڈمنسٹریٹر یا تو مراعات یافتہ کنٹینر کے ساتھ ڈیمن سیٹ استعمال کرتا ہے یا /etc/sysctls.conf نوڈ کی لینکس ڈسٹری بیوشن میں ترمیم کرسکتا ہے۔ نوڈ ٹیوننگ آپریٹر کو نوڈ لیول sysctls سیٹ کرنے کے لیے بھی استعمال کیا جا سکتا ہے۔

محفوظ بمقابلہ غیر محفوظ نظام:

sysctls کے دو گروپ ہیں: محفوظ اور غیر محفوظ۔ محفوظ sysctls مناسب طریقے سے نام کی جگہ پر ہیں اور وہ ایک ہی نوڈ پر پوڈ کے اندر مکمل طور پر الگ تھلگ ہیں۔ محفوظ sysctls ڈیفالٹ کے طور پر فعال ہیں اور پوڈ کی تفصیلات میں ترمیم کرکے پوڈ میں استعمال کیا جا سکتا ہے۔ تاہم، غیر محفوظ sysctls بطور ڈیفالٹ غیر فعال ہیں اور انہیں کلسٹر ایڈمنسٹریٹر کے ذریعہ دستی طور پر فعال کرنے کی ضرورت ہے۔ محفوظ نظام اپنے پڑوسیوں پر اثرانداز نہیں ہوتے کیونکہ وہ صحیح طور پر نام کی جگہ پر ہیں۔ جب کہ غیر محفوظ نظام غیر متوقع طور پر اپنے پڑوسیوں کو متاثر کر سکتا ہے جیسے کسی سسٹم کو اوور لوڈ کرنا۔ sysctls کا محفوظ سیٹ مندرجہ ذیل ہے:

    • net.ipv4.ping_group_range
    • net.ipv4.ip_local_port_range
    • kernel.shm_rmid_forced
    • net.ipv4.tcp_syncookies

یہاں نوٹ کرنے کی بات یہ ہے کہ صرف نام کی جگہ کا ہونا کافی نہیں ہے کہ sysctl کو محفوظ سمجھا جائے۔

اب جب کہ ہم sysctls کی دونوں قسموں کو سمجھ چکے ہیں، آئیے ہم سیکھتے ہیں کہ ان sysctls کو Kubernetes میں کیسے استعمال کیا جائے۔ یہاں، ہم آپ کی رہنمائی کریں گے کہ محفوظ اور غیر محفوظ sysctls دونوں کو کیسے استعمال کیا جائے اور Kubernetes میں غیر محفوظ sysctls کو دستی طور پر کیسے فعال کیا جائے۔

مرحلہ نمبر 1: منی کیوب کلسٹر شروع کریں۔

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

> منی کیوب شروع کریں۔


یہ minikube کلسٹر شروع کرے گا جہاں آپ kubectl کمانڈز چلا سکتے ہیں اور Kubernetes پلیٹ فارم میں Linux sysctls استعمال کر سکتے ہیں۔ جب آپ اس کمانڈ پر عمل کرتے ہیں، تو آپ کو نیچے دیے گئے ایک جیسا آؤٹ پٹ ملے گا۔

مرحلہ نمبر 2: sysctls کے پیرامیٹرز کو چیک کریں۔

sysctls انٹرفیس کا استعمال کرنل پیرامیٹرز کو تبدیل کرنے کے لیے کیا جاتا ہے جو /proc/sys/ ورچوئل پروسیس فائل میں پائے جاتے ہیں۔ تمام پیرامیٹرز کی فہرست بنانے کے لیے، نیچے دی گئی کمانڈ کو استعمال کیا جا سکتا ہے:

> sudo sysctl -a


یہ کمانڈ /proc/sys/ ورچوئل پروسیس فائل سے تمام کرنل پیرامیٹرز کی فہرست بنائے گی۔ ذیل میں سنیپ شاٹ میں دیا گیا نمونہ آؤٹ پٹ دیکھیں:

مرحلہ نمبر 3: غیر محفوظ sysctls کو فعال کریں۔

غیر محفوظ sysctls کو دستی طور پر فعال کرنے کی ضرورت ہے کیونکہ وہ بطور ڈیفالٹ غیر فعال ہیں۔ کلسٹر ایڈمن دستی طور پر غیر محفوظ sysctls کو فی نوڈ کی بنیاد پر فعال کرتا ہے۔ جن پوڈز نے غیر محفوظ نظام کو غیر فعال کر دیا ہے انہیں لانچ نہیں کیا جا سکتا بلکہ صرف شیڈول کیا جا سکتا ہے۔ کچھ مخصوص شرائط ہیں (جیسے رن ٹائم ایپلیکیشن ٹیوننگ، ہائی پرفارمنس وغیرہ) جب کلسٹر ایڈمن غیر محفوظ سسٹمز کی اجازت دے سکتا ہے۔ غیر محفوظ sysctls کو نوڈ بہ نوڈ کی بنیاد پر فعال کرنے کے لیے، آپ ذیل میں دی گئی kubectl کمانڈ استعمال کر سکتے ہیں:

> kubectl -Allowed-unsafe-sysctls \


یہ kubectl کمانڈ استعمال کرکے غیر محفوظ sysctls کو فعال کرنے کا ایک بہت بنیادی اور آسان طریقہ ہے۔


مزید برآں، غیر محفوظ sysctls کو minikube extra-config پرچم کا استعمال کرکے فعال کیا جا سکتا ہے۔ یہ ذیل میں دی گئی کمانڈ کا استعمال کرتے ہوئے کیا جا سکتا ہے:

> minikube start –extra-config=”kubectl.allowed-unsafe-sysctls=kernel.msg * ,net.core.somaxconn'...


یہ کمانڈ آپ کو منی کیوب کلسٹر کے ذریعے غیر محفوظ sysctls کو فعال کرنے کی اجازت دیتی ہے۔ تاہم، یہ صرف نام کی جگہ والے sysctls کو فعال کر سکتا ہے۔ ذیل میں سنیپ شاٹ میں دیا گیا نمونہ آؤٹ پٹ دیکھیں:

نتیجہ

اس مضمون نے ہمیں Linux sysctls انٹرفیس کا ایک جائزہ فراہم کیا۔ ہم نے تبادلہ خیال کیا کہ لینکس sysctl کیا ہے اور اسے کبرنیٹس ماحول میں کیسے استعمال کیا جا سکتا ہے۔ sysctls کے دو گروپ ہیں: محفوظ اور غیر محفوظ۔ sysctls کا محفوظ گروپ بطور ڈیفالٹ فعال ہوتا ہے، جبکہ غیر محفوظ sysctls گروپ ڈیفالٹ کے ذریعے غیر فعال ہوتا ہے۔ ایک سادہ اور آسان مثال کی مدد سے، ہم نے سیکھا کہ kubectl کمانڈ اور minikube -extra-config فلیگ کا استعمال کرتے ہوئے غیر محفوظ sysctls کو کیسے فعال کیا جائے۔