Kubernetes کا مناسب موازنہ لاگو کریں، تبدیل کریں اور پیچ کریں۔

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

Kubernetes کا مناسب موازنہ لاگو کریں، تبدیل کریں اور پیچ کریں۔

اگر گوگل پر تلاش کریں۔ جملہ "kubernetes apply vs replace" واقع ہے۔ StackOverflow کا جواب دیں۔، جو درست نہیں ہے۔ تلاش کرتے وقت "kubernetes اپلائی بمقابلہ پیچ" پہلا لنک اس کے لیے دستاویزات ہے۔ kubectl patchجس میں موازنہ شامل نہیں ہے۔ apply и patch. یہ مضمون مختلف اختیارات کے ساتھ ساتھ ہر ایک کے مناسب استعمال کو بھی دیکھے گا۔

Kubernetes وسائل (سروس، تعیناتی، داخل ہونے، وغیرہ) کے لائف سائیکل کے دوران، بعض اوقات آپ کو اس وسائل کی کچھ خصوصیات کو تبدیل کرنے، شامل کرنے یا ہٹانے کی ضرورت ہوتی ہے۔ مثال کے طور پر، ایک نوٹ شامل کریں، نقل کی تعداد میں اضافہ یا کمی کریں۔

کبرنیٹس سی ایل آئی

اگر آپ پہلے سے ہی CLI کے ذریعے Kubernetes کلسٹرز کے ساتھ کام کر رہے ہیں، تو آپ پہلے ہی سے واقف ہیں apply и edit. ٹیم apply فائل سے وسائل کی تفصیلات پڑھتا ہے اور Kubernetes کلسٹر میں "upsert" کرتا ہے، یعنی اگر یہ موجود نہیں ہے تو وسائل تخلیق کرتا ہے اور اگر موجود ہے تو اسے اپ ڈیٹ کرتا ہے۔ ٹیم edit API کے ذریعے ایک وسیلہ پڑھتا ہے، پھر وسائل کی تفصیلات کو مقامی فائل میں لکھتا ہے، جسے پھر ٹیکسٹ ایڈیٹر میں کھولا جاتا ہے۔ فائل میں ترمیم اور محفوظ کرنے کے بعد، kubectl API کے ذریعے کی گئی تبدیلیوں کو واپس بھیجے گا، جو ان تبدیلیوں کو وسائل پر احتیاط سے لاگو کرے گا۔

ہر کوئی احکام کو نہیں جانتا patch и replace. ٹیم patch آپ کو وسائل کی تفصیلات کا حصہ تبدیل کرنے کی اجازت دیتا ہے، صرف کمانڈ لائن پر تبدیل شدہ حصہ فراہم کرتا ہے۔ ٹیم replace جیسا کہ کام کرتا ہے edit، لیکن سب کچھ دستی طور پر کرنے کی ضرورت ہے: آپ کو وسائل کی تفصیلات کا موجودہ ورژن ڈاؤن لوڈ کرنے کی ضرورت ہے، مثال کے طور پر، استعمال کرتے ہوئے kubectl get -o yamlاس میں ترمیم کریں، پھر استعمال کریں۔ replace تبدیل شدہ تفصیلات کے مطابق وسائل کو اپ ڈیٹ کرنا۔ ٹیم replace اگر وسائل کو پڑھنے اور تبدیل کرنے کے درمیان کوئی تبدیلی واقع ہوئی ہے تو کام نہیں کرے گا۔

Kubernetes API

آپ شاید طریقوں سے واقف ہوں گے۔ CoreV1().Pods().Update(), replaceNamespacedService یا patch_namespaced_deployment، اگر آپ کلسٹرز کے ساتھ کام کرتے ہیں۔ Kubernetes API کے لیے کلائنٹ لائبریری کچھ پروگرامنگ زبان کا استعمال کرتے ہوئے. لائبریری ان طریقوں کو HTTP درخواستوں کے ذریعے طریقوں کا استعمال کرتے ہوئے ہینڈل کرتی ہے۔ PUT и PATCH... جس میں update и replace استعمال کریں PUTاور patchچاہے یہ کتنا ہی معمولی کیوں نہ ہو، استعمال کرتا ہے۔ PATCH.

یہ بات قابل ذکر ہونا چاہئے کہ kubectl API کے ذریعے کلسٹرز کے ساتھ بھی کام کرتا ہے۔ دوسرے الفاظ میں، kubectlگو لینگویج کے لیے کلائنٹ لائبریری کے اوپر ایک ریپر ہے، جو معیاری API صلاحیتوں کے علاوہ زیادہ کمپیکٹ اور پڑھنے کے قابل شکل میں سب کمانڈز فراہم کرنے کی صلاحیت فراہم کرتا ہے۔ مثال کے طور پر، جیسا کہ آپ نے پہلے ہی دیکھا ہوگا، طریقہ apply پچھلے پیراگراف میں اوپر ذکر نہیں کیا گیا تھا۔ فی الحال (مئی 2020، تقریبا. مترجم) تمام منطق kubectl apply، یعنی غیر موجود وسائل بنانا اور موجودہ وسائل کو اپ ڈیٹ کرنا، مکمل طور پر کوڈ سائیڈ پر کام کرتا ہے۔ kubectl. کوششیں کی جا رہی ہیں۔ منطق کی منتقلی پر apply API کی طرف، لیکن یہ اب بھی بیٹا میں ہے۔ میں ذیل میں مزید تفصیل سے لکھوں گا۔

ڈیفالٹ کی طرف سے پیچ

بہترین استعمال patch، اگر آپ وسائل کو اپ ڈیٹ کرنا چاہتے ہیں۔ اس طرح دونوں کلائنٹ لائبریریاں Kubernetes API اور کے اوپر کام کرتی ہیں۔ kubectl (حیرت کی بات نہیں، کیونکہ یہ کلائنٹ لائبریری کے لیے ایک ریپر ہے، تقریبا. مترجم).

حکمت عملی سے کام کریں۔

تمام ٹیمیں۔ kubectl apply, edit и patch طریقہ استعمال کریں PATCH موجودہ وسائل کو اپ ڈیٹ کرنے کی HTTP درخواستوں میں۔ اگر آپ کمانڈز کے نفاذ کو مزید تفصیل سے دیکھتے ہیں، تو ان میں سے سبھی اپروچ استعمال کرتے ہیں۔ اسٹریٹجک ضم پیچنگ وسائل کو اپ ڈیٹ کرنے کے لیے، اگرچہ کمانڈ patch دوسرے طریقے استعمال کر سکتے ہیں (ذیل میں اس پر مزید)۔ اسٹریٹجک-مرج پیچنگ اپروچ فراہم کردہ تصریح کو موجودہ تصریح کے ساتھ ملا کر "اسے درست کرنے" کی کوشش کرتا ہے۔ مزید خاص طور پر، یہ اشیاء اور صفوں دونوں کو یکجا کرنے کی کوشش کرتا ہے، جس کا مطلب ہے کہ تبدیلیاں اضافی ہوتی ہیں۔ مثال کے طور پر، کمانڈ چلانا patch پوڈ کنٹینر کی تصریح میں ایک نئے ماحولیاتی متغیر کے ساتھ، ماحول کے متغیر کو موجودہ ماحولیاتی متغیرات میں اوور رائٹ کرنے کے بجائے شامل کرنے کا سبب بنتا ہے۔ اس نقطہ نظر کو استعمال کرتے ہوئے ہٹانے کے لیے، آپ کو فراہم کردہ تفصیلات میں پیرامیٹر کی قدر کو کالعدم کرنے پر مجبور کرنا چاہیے۔ ٹیموں میں سے کون سی kubectl کیا اپ ڈیٹ کرنے کے لیے استعمال کرنا بہتر ہے؟

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

اگر آپ کمانڈ استعمال نہیں کرتے ہیں۔ applyکے طور پر استعمال کیا جا سکتا ہے editاور patch، اس کمانڈ کا انتخاب کرنا جو کی جانے والی تبدیلی کے لیے بہترین ہے۔ BOM خصوصیات کو شامل اور تبدیل کرتے وقت، دونوں نقطہ نظر تقریباً ایک جیسے ہوتے ہیں۔ تفصیلات کی خصوصیات یا صف کے عناصر کو حذف کرتے وقت edit ایک بار لانچ کی طرح برتاؤ کرتا ہے۔ applyاس میں ترمیم کرنے سے پہلے اور بعد میں تفصیلات کیسی تھی اس پر نظر رکھنا بھی شامل ہے، تاکہ آپ واضح طور پر کسی وسائل سے خصوصیات اور صف کے عناصر کو ہٹا سکیں۔ آپ کو تصریح میں واضح طور پر پراپرٹی ویلیو کو کالعدم کرنے کی ضرورت ہے۔ patchاسے وسائل سے ہٹانے کے لیے۔ اسٹریٹجک-مرج پیچنگ کا استعمال کرتے ہوئے ایک صف کے عنصر کو ہٹانا زیادہ پیچیدہ ہے کیونکہ اس کے لیے انضمام کی ہدایات کے استعمال کی ضرورت ہوتی ہے۔ مزید قابل عمل متبادلات کے لیے ذیل میں اپ گریڈ کے دیگر طریقے دیکھیں۔

کلائنٹ لائبریری میں اپ ڈیٹ کے طریقوں کو نافذ کرنے کے لیے جو اوپر دیے گئے کمانڈز کے ساتھ برتاؤ کرتے ہیں۔ kubectl، درخواستوں میں مقرر کیا جانا چاہئے۔ content-type в application/strategic-merge-patch+json. اگر آپ کسی تصریح میں پراپرٹیز کو ہٹانا چاہتے ہیں تو آپ کو واضح طور پر ان کی اقدار کو اسی طرح کالعدم کرنے کی ضرورت ہے kubectl patch. اگر آپ کو صف کے عناصر کو ہٹانے کی ضرورت ہے، تو آپ کو اپ ڈیٹ کی تفصیلات میں انضمام کی ہدایات کو شامل کرنا چاہیے یا اپ ڈیٹس کے لیے ایک مختلف طریقہ استعمال کرنا چاہیے۔

اپ ڈیٹس کے دوسرے طریقے

Kubernetes اپ ڈیٹ کے دو دیگر طریقوں کی حمایت کرتا ہے: JSON ضم پیچ и JSON پیچ. JSON مرج پیچ اپروچ ان پٹ کے بطور جزوی Kubernetes تصریح لیتا ہے اور سٹریٹجک-مرج پیچنگ اپروچ کی طرح ضم کرنے والی اشیاء کو سپورٹ کرتا ہے۔ دونوں کے درمیان فرق یہ ہے کہ یہ صرف صف کی تبدیلی کی حمایت کرتا ہے، بشمول پوڈ تفصیلات میں کنٹینر سرنی۔ اس کا مطلب یہ ہے کہ JSON مرج پیچ استعمال کرتے وقت، آپ کو تمام کنٹینرز کے لیے مکمل وضاحتیں فراہم کرنے کی ضرورت ہے اگر کسی کنٹینر کی کوئی خاصیت تبدیل ہو جائے۔ لہذا یہ نقطہ نظر BOM میں ایک صف سے عناصر کو ہٹانے کے لئے مفید ہے۔ کمانڈ لائن پر آپ JSON مرج پیچ کو استعمال کر کے منتخب کر سکتے ہیں۔ kubectl patch --type=merge. Kubernetes API کے ساتھ کام کرتے وقت، آپ کو درخواست کا طریقہ استعمال کرنا چاہیے۔ PATCH اور تنصیب content-type в application/merge-patch+json.

JSON پیچ اپروچ، وسائل کی جزوی تفصیلات فراہم کرنے کے بجائے، وہ تبدیلیاں فراہم کرتا ہے جو آپ وسائل میں ایک صف کے طور پر کرنا چاہتے ہیں، جس میں صف کا ہر عنصر وسائل میں کی جانے والی تبدیلی کی وضاحت کی نمائندگی کرتا ہے۔ یہ نقطہ نظر کی جانے والی تبدیلیوں کا اظہار کرنے کا ایک زیادہ لچکدار اور طاقتور طریقہ ہے، لیکن جزوی وسائل کی تفصیلات بھیجنے کے بجائے، ایک علیحدہ، غیر Kubernetes فارمیٹ میں کی جانے والی تبدیلیوں کو درج کرنے کی قیمت پر۔ میں kubectl آپ JSON پیچ کو استعمال کرکے منتخب کرسکتے ہیں۔ kubectl patch --type=json. Kubernetes API استعمال کرتے وقت، یہ نقطہ نظر درخواست کے طریقہ کار کا استعمال کرتے ہوئے کام کرتا ہے۔ PATCH اور تنصیب content-type в application/json-patch+json.

ہمیں اعتماد کی ضرورت ہے - متبادل کا استعمال کریں۔

کچھ معاملات میں، آپ کو اس بات کا یقین کرنے کی ضرورت ہے کہ وسائل کے پڑھنے اور اسے اپ ڈیٹ کیے جانے کے درمیان کسی وسائل میں کوئی تبدیلی نہیں کی گئی ہے۔ دوسرے الفاظ میں، آپ کو یہ یقینی بنانا چاہئے کہ تمام تبدیلیاں ہوں گی۔ جوہری. اس صورت میں، وسائل کو اپ ڈیٹ کرنے کے لیے آپ کو استعمال کرنا چاہیے۔ replace. مثال کے طور پر، اگر آپ کے پاس کاؤنٹر کے ساتھ ConfigMap ہے جسے متعدد ذرائع سے اپ ڈیٹ کیا جاتا ہے، تو آپ کو اس بات کا یقین ہونا چاہیے کہ دو ذرائع ایک ہی وقت میں کاؤنٹر کو اپ ڈیٹ نہیں کرتے ہیں، جس کی وجہ سے اپ ڈیٹ ضائع ہو جاتا ہے۔ ظاہر کرنے کے لیے، نقطہ نظر کا استعمال کرتے ہوئے واقعات کی ترتیب کا تصور کریں۔ patch:

  • A اور B API سے وسائل کی موجودہ حالت حاصل کرتے ہیں۔
  • ہر ایک مقامی طور پر کاؤنٹر کو ایک ایک کرکے اور "اپ ڈیٹ کردہ" نوٹ میں بالترتیب "A" یا "B" کو شامل کرکے تفصیلات کو اپ ڈیٹ کرتا ہے۔
  • اور یہ وسائل کو تھوڑی تیزی سے اپ ڈیٹ کرتا ہے۔
  • B وسائل کو اپ ڈیٹ کرتا ہے۔

نتیجے کے طور پر، اپ ڈیٹ A کھو گیا ہے۔ آخری آپریشن patch جیت جاتا ہے، کاؤنٹر کو دو کے بجائے ایک سے بڑھایا جاتا ہے، اور "اپ ڈیٹ کردہ" نوٹ کی قدر "B" پر ختم ہوتی ہے اور اس میں "A" نہیں ہوتا ہے۔ آئیے اوپر کا موازنہ کرتے ہیں کہ جب اپ ڈیٹ اپروچ کا استعمال کرتے ہوئے کیا جاتا ہے تو کیا ہوتا ہے۔ replace:

  • A اور B API سے وسائل کی موجودہ حالت حاصل کرتے ہیں۔
  • ہر ایک مقامی طور پر کاؤنٹر کو ایک ایک کرکے اور "اپ ڈیٹ کردہ" نوٹ میں بالترتیب "A" یا "B" کو شامل کرکے تفصیلات کو اپ ڈیٹ کرتا ہے۔
  • اور یہ وسائل کو تھوڑی تیزی سے اپ ڈیٹ کرتا ہے۔
  • B وسائل کو اپ ڈیٹ کرنے کی کوشش کرتا ہے، لیکن اپ ڈیٹ کو API نے مسترد کر دیا ہے کیونکہ وسائل کا ورژن تفصیلات میں ہے replace Kubernetes میں وسائل کے موجودہ ورژن سے مماثل نہیں ہے کیونکہ وسائل کے ورژن کو A کے تبدیل کرنے کے عمل سے بڑھایا گیا تھا۔

مندرجہ بالا صورت میں، B کو وسائل کو دوبارہ حاصل کرنا ہوگا، نئی حالت میں تبدیلیاں کرنا ہوں گی اور دوبارہ کوشش کرنی ہوگی۔ replace. اس کی وجہ سے کاؤنٹر کو دو سے بڑھایا جائے گا اور "اپ ڈیٹ شدہ" نوٹ کے آخر میں "AB" شامل ہوگا۔

مندرجہ بالا مثال سے یہ ظاہر ہوتا ہے کہ عمل کرتے وقت replace پورے وسائل کو مکمل طور پر تبدیل کر دیا گیا ہے۔ کے لیے استعمال کی تفصیلات replace، جزوی نہیں ہونا چاہیے، یا حصوں میں جیسا کہ میں ہے۔ apply، لیکن مکمل، اضافہ سمیت resourceVersion تفصیلات کے میٹا ڈیٹا میں۔ اگر آپ نے فعال نہیں کیا ہے۔ resourceVersion یا آپ کا فراہم کردہ ورژن موجودہ نہیں ہے، متبادل کو مسترد کر دیا جائے گا۔ تو استعمال کرنے کا بہترین طریقہ ہے۔ replace - وسائل کو پڑھیں، اسے اپ ڈیٹ کریں اور اسے فوری طور پر تبدیل کریں۔ استعمال کرنا kubectl، یہ اس طرح نظر آسکتا ہے:

$ kubectl get deployment my-deployment -o json 
    | jq '.spec.template.spec.containers[0].env[1].value = "new value"' 
    | kubectl replace -f -

یہ بات قابل غور ہے کہ درج ذیل دو کمانڈز، جو ترتیب وار عمل میں آتی ہیں، کامیابی کے ساتھ عمل میں آئیں گی، کیونکہ deployment.yaml پراپرٹی پر مشتمل نہیں ہے۔ .metadata.resourceVersion

$ kubectl create -f deployment.yaml
$ kubectl replace -f deployment.yaml

یہ اوپر کہی گئی بات سے متصادم معلوم ہوتا ہے، یعنی "شامل کرنا resourceVersion تفصیلات کے میٹا ڈیٹا میں۔" کیا یہ کہنا غلط ہے؟ نہیں، ایسا نہیں ہے، کیونکہ اگر kubectl نوٹس جس کی آپ نے وضاحت نہیں کی۔ resourceVersion، یہ اسے وسائل سے پڑھے گا اور اسے آپ کے بیان کردہ تصریح میں شامل کرے گا، اور تب ہی اس پر عمل درآمد کرے گا۔ replace. کیونکہ یہ ممکنہ طور پر خطرناک ہے اگر آپ جوہری پر بھروسہ کرتے ہیں، تو جادو پوری طرح سے کام کرتا ہے۔ kubectl، آپ کو API کے ساتھ کام کرنے والی کلائنٹ لائبریریوں کا استعمال کرتے وقت اس پر انحصار نہیں کرنا چاہئے۔ اس صورت میں آپ کو موجودہ وسائل کی تفصیلات کو پڑھنا ہوگا، اسے اپ ڈیٹ کرنا ہوگا اور پھر عمل کرنا ہوگا۔ PUT درخواست

آپ ایک پیچ نہیں کر سکتے ہیں - ہم ایک تبدیلی کرتے ہیں

بعض اوقات آپ کو کچھ تبدیلیاں کرنے کی ضرورت ہوتی ہے جو API کے ذریعہ نہیں سنبھال سکتے ہیں۔ ان صورتوں میں، آپ وسیلہ کو حذف اور دوبارہ تخلیق کر کے اسے تبدیل کرنے پر مجبور کر سکتے ہیں۔ یہ استعمال کرتے ہوئے کیا جاتا ہے۔ kubectl replace --force. کمانڈ کو چلانے سے وسائل کو فوری طور پر ہٹا دیا جاتا ہے اور پھر انہیں فراہم کردہ تفصیلات سے دوبارہ تخلیق کیا جاتا ہے۔ API میں کوئی "فورس ریپلیس" ہینڈلر نہیں ہے، اور API کے ذریعے ایسا کرنے کے لیے، آپ کو دو آپریشن کرنے کی ضرورت ہے۔ پہلے آپ کو وسائل کو ترتیب دے کر حذف کرنے کی ضرورت ہے۔ gracePeriodSeconds صفر (0) اور propagationPolicy "پس منظر" میں اور پھر مطلوبہ تفصیلات کے ساتھ اس وسائل کو دوبارہ بنائیں۔

انتباہ: یہ نقطہ نظر ممکنہ طور پر خطرناک ہے اور یہ غیر متعینہ حالت کا باعث بن سکتا ہے۔

سرور سائڈ پر اپلائی کریں۔

جیسا کہ اوپر ذکر کیا گیا ہے، Kubernetes کے ڈویلپر منطق کو نافذ کرنے پر کام کر رہے ہیں۔ apply کی kubectl Kubernetes API میں۔ منطق apply Kubernetes 1.18 کے ذریعے دستیاب ہے۔ kubectl apply --server-side یا طریقہ استعمال کرتے ہوئے API کے ذریعے PATCH с content-type application/apply-patch+YAML.

نوٹ: JSON بھی درست YAML ہے، لہذا آپ JSON کے بطور تصریح بھیج سکتے ہیں چاہے content-type گے application/apply-patch+yaml.

اس منطق کے علاوہ kubectl API کے ذریعے سب کے لیے دستیاب ہو جاتا ہے، apply سرور کی طرف، اس بات پر نظر رکھتا ہے کہ تصریح میں موجود فیلڈز کے لیے کون ذمہ دار ہے، اس طرح اس کی تنازعات سے پاک ترمیم کے لیے محفوظ متعدد رسائی کی اجازت دیتا ہے۔ دوسرے الفاظ میں، اگر apply سرور کی طرف زیادہ وسیع ہو جائے گا، مختلف کلائنٹس کے لیے ایک یونیورسل محفوظ ریسورس مینجمنٹ انٹرفیس نمودار ہوگا، مثال کے طور پر، kubectl، Pulumi یا Terraform، GitOps، نیز کلائنٹ لائبریریوں کا استعمال کرتے ہوئے خود تحریر کردہ اسکرپٹس۔

کے نتائج

مجھے امید ہے کہ کلسٹرز میں وسائل کو اپ ڈیٹ کرنے کے مختلف طریقوں کا یہ مختصر جائزہ آپ کے لیے مددگار تھا۔ یہ جاننا اچھا ہے کہ یہ صرف اپلائی بمقابلہ تبدیل نہیں ہے؛ اپلائی، ایڈٹ، پیچ، یا ریپلیس کا استعمال کرکے کسی وسیلہ کو اپ ڈیٹ کرنا ممکن ہے۔ سب کے بعد، اصولی طور پر، ہر نقطہ نظر کی درخواست کا اپنا علاقہ ہے. جوہری تبدیلیوں کے لیے، تبدیل کرنا افضل ہے؛ بصورت دیگر، آپ کو اپلائی کے ذریعے اسٹریٹجک-مرج پیچ استعمال کرنا چاہیے۔ کم از کم، میں توقع کرتا ہوں کہ آپ یہ سمجھیں گے کہ "kubernetes apply vs replace" تلاش کرتے وقت آپ Google یا StackOerflow پر بھروسہ نہیں کر سکتے۔ کم از کم اس وقت تک جب تک یہ مضمون موجودہ جواب کی جگہ نہ لے۔

Kubernetes کا مناسب موازنہ لاگو کریں، تبدیل کریں اور پیچ کریں۔

ماخذ: www.habr.com

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