مٿيان 10 ڪبرنيٽس ٽرڪن ۽ ٽوٽس

مٿيان 10 ڪبرنيٽس ٽرڪن ۽ ٽوٽس

انٽرنيٽ تي تمام گهڻو حوالو ادب آهي، پر ڪڏهن ڪڏهن آسان ترين ٽوٽڪا تمام قيمتي هوندا آهن. ٽيم Mail.ru کان Kubernetes aaS ترجمو ڏهن چالن ۽ ٽوڪن جو هڪ انتخاب، جيڪو مضمون جي ليکڪ ڪبرنيٽس سان ڪم جي هڪ سال کانپوءِ گڏ ڪيو آهي. تجويزون اهميت جي لحاظ کان ترتيب نه آهن، پر اسان سوچيو ٿا ته هرڪو پنهنجي لاء ڪجهه مفيد ڳولي سگهندو.

Kubernetes سان استعمال ڪرڻ لاء آسان ترين حڪم

شروع ڪرڻ لاء، شايد ڪبرنيٽس سان ڪم ڪرڻ ۾ آسان ۽ سڀ کان وڌيڪ مفيد قدم. هيٺ ڏنل حڪم حڪم مڪمل ڪرڻ جي قابل بڻائي ٿو kubectl باش شيل ۾:

echo "source <(kubectl completion bash)" >> ~/.bashrc

خود بخود kubectl .bashrc فائل ڏانهن لکيو ويندو ۽ خودڪار طور تي چالو ڪيو ويندو هر وقت شيل شروع ڪيو ويندو. هي ڊگھي حڪمن ۽ اختيارن وانگر ٽائپنگ کي تيز ڪري ٿو all-namespaces. ۾ وڌيڪ پڙهو Kubernetes bash مدد.

Namespace Memory ۽ CPU Default Limits

جيڪڏهن ڪا ايپليڪيشن غلط لکي وئي آهي، جيئن ته هر سيڪنڊ ۾ هڪ نئون ڊيٽابيس ڪنيڪشن کولڻ، پر ان کي ڪڏهن به بند نه ڪيو وڃي، ته پوءِ ڪلستر ميموري ليڪ ڪندو. ۽ جيڪڏهن ايپليڪيشن ۾ ميموري جي حد نه هوندي آهي ڊولپمينٽ دوران، اهو ٿي سگهي ٿو نوڊ جي ناڪامي کي.

هن کي روڪڻ لاءِ، ڪبرنيٽس توهان کي اجازت ڏئي ٿو ته هر نالي جي جڳهه لاءِ ڊفالٽ حدون مقرر ڪري. اهي yaml فائل ۾ مخصوص نالي جي جاء لاء لکيل آهن. هتي اهڙي فائل جو هڪ مثال آهي:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

اهڙو yaml ٺاهيو ۽ ڪنهن به نالي جي جاء تي لاڳو ڪريو. مثال طور، نالي جي جاء تي limit-example. ھاڻي، ھن نالي جي جڳھ ۾ مقرر ڪيل ڪنھن به ڪنٽينر جي حد 512Mi ھوندي، جيستائين ھن ڪنٽينر لاءِ ڪا ٻي انفرادي حد مقرر نه ڪئي وڃي.

Kubernetes جي پراڻن نسخن ۾ ڪچرو گڏ ڪرڻ

ڪبيليٽ ڊفالٽ طور ڪچرو گڏ ڪرڻ شروع ڪري ٿو جڏهن var/lib/docker 90٪ موجود ڊسڪ اسپيس تي قبضو ڪري ٿو. اهو تمام وڏو آهي، جڏهن ته، Kubernetes 1.7 کان اڳ، استعمال ٿيل انوڊس جي تعداد تي ڪا به ڊفالٽ حد نه هئي، جيڪا فائل سسٽم ۾ فائلن جي تعداد سان مطابقت رکي ٿي.

ممڪن طور تي توهان جو ڪنٽينر var/lib/docker صرف ڊسڪ اسپيس جو 50٪ استعمال ڪري سگهي ٿو، پر اهو انوڊس کان ٻاهر نڪري سگهي ٿو، جيڪو ڪارڪنن لاء مسئلا پيدا ڪندو.

1.4 کان 1.6 تائين ڪبيليٽ جي پراڻن ورزن ۾، توھان کي ھيٺ ڏنل جھنڊو شامل ڪرڻو پوندو:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

1.7 ۽ بعد ۾، هي پرچم ڊفالٽ طور مقرر ڪيو ويو آهي. بهرحال، پوئين نسخو انوڊ جي حد کي لاڳو نٿو ڪري.

Minikube… ننڍڙا پر طاقتور مقامي Kubernetes

Minikube هڪ مقامي ڪبرنيٽس ڪلستر کي هلائڻ جو آسان طريقو آهي. اهو هڪ سادي حڪم سان شروع ڪيو ويو آهي:

minikube start

اهو حڪم توهان جي مشين تي هلندڙ حقيقي ڪبرنيٽس ڪلستر جي نتيجي ۾ ٿيندو.

مٿيان 10 ڪبرنيٽس ٽرڪن ۽ ٽوٽس
تمثيل جو ذريعو

چال اها آهي ته ايپليڪيشن ڪيئن ٺاهي ۽ ان کي مقامي طور تي هن ڪلستر تي هلائي. جيستائين ٻي صورت ۾ بيان نه ڪيو وڃي، ڊاکر تصوير توهان جي مشين تي ٺاهي ويندي، نه ڪلستر تي.

ڊڪر کي مجبور ڪرڻ لاءِ تصوير کي مقامي ڪبرنيٽس ڪلستر ڏانهن ڌڪڻ لاءِ ، هيٺ ڏنل حڪم ڏنو ويو آهي ڊڪر مشين کي:

eval $(minikube docker-env)

ھاڻي اسان مقامي ڪبرنيٽس ڪلستر تي ايپليڪيشنون ٺاھي سگھون ٿا.

هر ڪنهن سان kubectl رسائي حصيداري نه ڪريو

اهو واضع لڳي ٿو، پر جيڪڏهن ڪيتريون ئي ٽيمون ساڳيون ڪلستر استعمال ڪري رهيون آهن انهن جي ايپليڪيشنن لاءِ (جنهن لاءِ ڪبرنيٽس ٺاهيو ويو هو)، صرف انهن سڀني کي هڪ قطار ۾ جاري نه ڪريو. kubectl. اهو بهتر آهي ته حڪمن کي الڳ ڪيو وڃي، انهن مان هر هڪ کي پنهنجي نالي جي جاءِ ڏيو ۽ RBAC پاليسين سان رسائي کي محدود ڪيو وڃي.

توهان هر پوڊ لاء رسائي، پڙهڻ، ٺاهڻ، حذف ڪرڻ، ۽ ٻين عملن جي حقن کي تفويض ڪندي پريشان ٿي سگهو ٿا. پر بنيادي شيء رازن تائين رسائي کي محدود ڪرڻ، ان کي صرف منتظمين جي اجازت ڏيڻ آهي. هي ڪيئن اسان انهن جي وچ ۾ فرق ڪريون ٿا جيڪي ڪلستر کي منظم ڪري سگهن ٿا ۽ جيڪي صرف ان کي ترتيب ڏئي سگهن ٿا.

پوڊ بجيٽ کي منظم ڪريو

ڪيئن پڪ ڪجي ته ڪوبرنيٽس ڪلستر ۾ ايپليڪيشن لاءِ ڪو به وقت نه آهي؟ PodDisruption Budget ۽ وري PodDisruption Budget.

ڪلستر وقتي طور تي اپڊيٽ ڪيا ويندا آهن ۽ نوڊس خالي ڪيا ويندا آهن. ڪجھ به نه بيٺو آهي، اها حقيقت آهي. هر هڪ کان وڌيڪ مثالن سان گڏ هڪ PDB (PodDisruptionBudget) شامل هجڻ ضروري آهي. اهو هڪ سادي yaml فائل ۾ ٺاهيو ويو آهي جيڪو ڪلستر تي لاڳو ٿئي ٿو. هڪ خاص PDB جو دائرو ليبل چونڊيندڙن طرفان طئي ڪيو ويندو آهي.

نوٽ: PDB بجيٽ صرف ان صورت ۾ ورتو وڃي ٿو جڏهن واپسي واري بجيٽ جي خلاف ورزي (رضاڪارانه رڪاوٽ). حالتن ۾ هارڊويئر ناڪامي، PDB ڪم نه ڪندو.

PDB مثال:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

ٻه مکيه پيراگراف آهن matchLabels и minAvailable. پهريون پيٽرولر بيان ڪري ٿو ته ڪهڙي ايپليڪيشنن تي بجيٽ لاڳو ٿئي ٿي. مثال طور، جيڪڏهن مون وٽ ٽيگ سان ڊيپلائيشنز آهن app: app-a и app: app-b، پوءِ هي PDB صرف پهرين تي لاڳو ٿيندو.

نيم minAvailable نوڊ کي خالي ڪرڻ (صاف ڪرڻ) جي حساب ۾ ورتو ويو. مثال طور، اسان جي مثال ۾، سڀ واقعا تباهي جي دوران ختم ٿي ويا آهن app: app-aسواءِ ٻن جي.

هي توهان کي ڪنٽرول ڪرڻ جي اجازت ڏئي ٿو ته ايپليڪيشن جا ڪيترا مثال ڪنهن به وقت تي هلڻ گهرجن.

ايپليڪيشن صحت جي نگراني

اهڙي مانيٽرنگ ٻن طريقن سان ممڪن آهي: تياري يا جاندار ٽيسٽ استعمال ڪندي.

پهرين جاچ (تيار) اهو طئي ڪري ٿو ته ڇا ڪنٽينر ٽرئفڪ حاصل ڪرڻ لاءِ تيار آهي.

ٻيو (Liveness) اشارو ڪري ٿو ته ڪنٽينر صحتمند آهي يا ٻيهر شروع ڪرڻ جي ضرورت آهي.

لاڳاپيل ترتيبون صرف ترتيب ڏيڻ لاءِ yaml ۾ شامل ڪيون ويون آھن. اتي توھان وضاحت ڪري سگھو ٿا ٽائم آئوٽ، دير جو وقت ۽ ٻيهر ڪوششن جو تعداد. انھن جي باري ۾ وڌيڪ ڏسو Kubernetes دستاويز.

هر هنڌ ليبل

ليبلز Kubernetes ۾ بنيادي تصورن مان ھڪڙو آھن. اهي شيون هڪ ٻئي سان آزاديء سان گفتگو ڪرڻ جي اجازت ڏين ٿا، انهي سان گڏ ليبل جي بنياد تي درخواستون ٺاهي. Kubernetes ۾، توهان شايد ڪلائنٽ ڏانهن وڃو ۽ مخصوص ليبلز لاء واقعا ڏسي سگهو ٿا.

لڳ ڀڳ ڪجھ به ٿي سگهي ٿو ليبل سان، پر هڪ سٺو مثال اهو هوندو ته هڪ ئي ڪلستر تي پروگرام هلائڻ لاءِ گھڻن ماحول پيدا ڪرڻ.

اچو ته چئو ته توهان ساڳئي ڪلستر لاء استعمال ڪريو dev и qa. هن جو مطلب آهي ته توهان هڪ درخواست ڪري سگهو ٿا app-a، ساڳئي وقت ٻنهي ماحول ۾ ڪم ڪرڻ qa и dev. انهي صورت ۾، اسان مناسب پيٽرولر جي وضاحت ڪندي مخصوص ماحول ۾ الڳ الڳ ايپليڪيشن مثال تائين رسائي ڪري سگهون ٿا environment. مثال طور app: app-a и environment: dev هڪ ماحول لاء، ۽ app: app-a и environment: qa ٻئي لاءِ.

هي توهان کي ايپليڪيشن جي ٻنهي مثالن تائين رسائي جي اجازت ڏئي ٿو، مثال طور، ساڳئي وقت ٽيسٽ ڪرڻ.

شين کي ترتيب ڏيو

ڪبرنيٽس هڪ تمام طاقتور سسٽم آهي، پر ڪنهن به سسٽم کي آخرڪار عملن جي وڏي تعداد ۾ دٻايو وڃي ٿو. Kubelet سڀني عملن ۽ چيڪن کي هلائي ٿو جيڪو توهان بيان ڪيو آهي، انهي سان گڏ اهو پنهنجو.

يقينن، هڪ يتيم سروس سسٽم کي سست نه ڪندي، ۽ ڪبرنيٽس کي شروعات کان ماپ ڪرڻ لاء ٺهيل آهي. پر جيڪڏهن هڪ خدمت جي بدران هڪ ملين ظاهر ٿئي ٿو، ڪبلٽ کي ڇڪڻ شروع ٿئي ٿو.

جيڪڏهن ڪنهن سبب جي ڪري توهان ڊليٽ ڪري رهيا آهيو (ڪنٽينر، تصوير، جيڪو به)، بس پڪ ڪريو ته ان کي مڪمل طور تي صاف ڪريو.

ڄاڻو وڃ

اسان اسان جي مٿين ٽپ کي آخري لاء محفوظ ڪيو آهي. گو پروگرامنگ ٻولي سکو.

ڪبرنيٽس گو ۾ ترقي ڪئي وئي آهي، سڀئي ايڪسٽينشن گو ۾ لکيل آهن، ۽ ڪلائنٽ-گو لائبريري پڻ سرڪاري طور تي سپورٽ ڪئي وئي آهي.

اهو مختلف ۽ دلچسپ شين لاء استعمال ڪري سگهجي ٿو. مثال طور، Kubernetes سسٽم کي توهان جي ذائقي کي وڌائڻ لاء. مثال طور، توهان ڊيٽا گڏ ڪرڻ، ايپليڪيشنن کي ترتيب ڏيڻ، يا صرف ڪنٽينرز کي صاف ڪرڻ لاءِ پنهنجا پروگرام استعمال ڪري سگهو ٿا.

گو پروگرامنگ ٻولي سکڻ ۽ ڪلائنٽ-گو تي عبور حاصل ڪرڻ شايد مشوري جو سڀ کان اهم ٽڪرو آهي جيڪو نئين ڪبرنيٽس استعمال ڪندڙن کي ڏنو وڃي ٿو.

Mail.ru Cloud Solutions جي مدد سان ترجمو ڪيو ويو

ٻيو ڇا پڙهان:

  1. ڪبرنيٽس ۾ آٽو اسڪيلنگ جا ٽي سطح ۽ انهن کي ڪيئن موثر طريقي سان استعمال ڪجي.
  2. ڪبرنيٽس ڪم ڪندڙ نوڊس: ڪيترائي ننڍا يا ڪجھ وڏا?
  3. ڪبرنيٽس کي ترتيب ڏيڻ ۽ انتظام ڪرڻ لاءِ 25 مفيد اوزار.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو