Pinterest تي kubernetes پليٽ فارم ٺاهڻ

ڪيترن سالن کان، Pinterest جي 300 ملين صارفين 200 بلين پنن کان وڌيڪ 4 بلين بورڊن تي ٺاهيا آهن. استعمال ڪندڙن جي هن فوج ۽ وسيع مواد جي بنياد جي خدمت ڪرڻ لاءِ، پورٽل هزارين خدمتون تيار ڪيون آهن، جن ۾ مائڪرو سروسز جيڪي چند سي پي يوز ذريعي سنڀالي سگھجن ٿيون، وڏي مونولٿس تائين جيڪي ورچوئل مشينن جي پوري فليٽ تي هلن ٿيون. ۽ پوءِ اهو لمحو آيو جڏهن ڪمپني جون نظرون k8s تي پئجي ويون. Pinterest تي ”ڪيوب“ ڇو سٺو لڳندو هو؟ توھان ھن بابت اسان جي ھڪڙي تازي مضمون جي ترجمي مان سکندا بلاگ Pinterest انجنيئرنگ.

Pinterest تي kubernetes پليٽ فارم ٺاهڻ

سو، ڪروڙين صارفين ۽ سوين بلين پنن جا. صارفين جي هن فوج ۽ وسيع مواد جي بنياد جي خدمت ڪرڻ لاءِ، اسان هزارين خدمتون تيار ڪيون آهن، جن ۾ مائيڪرو سروسز شامل آهن جيڪي چند سي پي يوز ذريعي سنڀالي سگھجن ٿيون، وڏين مونولٿس تائين جيڪي ورچوئل مشينن جي پوري فليٽ تي هلن ٿيون. اضافي طور تي، اسان وٽ مختلف قسم جا فريم ورڪ آهن جيڪي شايد سي پي يو، ميموري، يا I/O رسائي جي ضرورت هونديون آهن.

اوزارن جي هن زو کي برقرار رکڻ ۾، ترقياتي ٽيم ڪيترن ئي چئلينجن کي منهن ڏئي ٿي:

  • پيداوار جي ماحول کي هلائڻ لاء انجنيئرن لاء ڪو به يونيفارم طريقو ناهي. غير ملڪي خدمتون، رياستي خدمتون ۽ فعال ترقي هيٺ منصوبا مڪمل طور تي مختلف ٽيڪنالاجي اسٽيڪ تي ٻڌل آهن. اهو انجنيئرن لاءِ هڪ مڪمل ٽريننگ ڪورس ٺاهڻ جو سبب بڻيو، ۽ اسان جي انفراسٽرڪچر ٽيم جي ڪم کي به سنجيدگيءَ سان پيچيده ڪري ٿو.
  • ڊولپرز سان گڏ مجازي مشينن جي پنهنجي بيبي سان اندروني منتظمين تي وڏو بوجھ پيدا ٿئي ٿو. نتيجي طور، OS يا AMI کي اپڊيٽ ڪرڻ لاءِ اهڙيون ساديون آپريشنون هفتا ۽ مهينا وٺن ٿيون. اهو بظاهر بلڪل روزمره جي حالتن ۾ ڪم لوڊ وڌائي ٿو.
  • موجوده حلن جي چوٽي تي عالمي انفراسٽرڪچر مينيجمينٽ اوزار ٺاهڻ ۾ مشڪلات. صورتحال حقيقت کان وڌيڪ پيچيده آهي ته مجازي مشينن جي مالڪن کي ڳولڻ آسان ناهي. اهو آهي، اسان کي خبر ناهي ته ڇا اها صلاحيت محفوظ طور تي اسان جي انفراسٽرڪچر جي ٻين حصن ۾ هلائڻ لاء ڪڍي سگهجي ٿي.

ڪنٽينر آرڪيسٽريشن سسٽم ڪم لوڊ مينيجمينٽ کي متحد ڪرڻ جو هڪ طريقو آهي. اهي ترقي جي رفتار کي وڌائڻ ۽ انفراسٽرڪچر جي انتظام کي آسان ڪرڻ جو دروازو کوليندا آهن، ڇاڪاڻ ته منصوبي ۾ شامل سڀئي وسيلا هڪ مرڪزي نظام طرفان منظم ڪيا ويندا آهن.

Pinterest تي kubernetes پليٽ فارم ٺاهڻ

شڪل 1: انفراسٽرڪچر جي ترجيحات (اعتماد، ڊولپر جي پيداوار، ۽ ڪارڪردگي).

Cloud Management پليٽ فارم ٽيم Pinterest تي 8 ۾ K2017s دريافت ڪيو. 2017 جي پهرئين اڌ تائين، اسان اسان جي اڪثر پيداواري صلاحيتن کي دستاويز ڪيو هو، بشمول API ۽ اسان جا سڀئي ويب سرور. ان کان پوء، اسان ڪنٽينر حلن کي ترتيب ڏيڻ، ڪلستر تعمير ڪرڻ ۽ انهن سان ڪم ڪرڻ لاء مختلف سسٽم جو مڪمل جائزو ورتو. 2017 جي آخر ۾، اسان ڪبرنيٽس استعمال ڪرڻ جو فيصلو ڪيو. اهو ڪافي لچڪدار هو ۽ ڊولپر ڪميونٽي ۾ وڏي پيماني تي حمايت ڪئي وئي.

اڄ تائين، اسان پنهنجا پنهنجا ڪلسٽر بوٽ ٽولز ٺاهيا آهن ڪوپس جي بنياد تي ۽ موجوده انفراسٽرڪچر حصن جهڙوڪ نيٽ ورڪنگ، سيڪيورٽي، ميٽرڪس، لاگنگ، سڃاڻپ جي انتظام، ۽ ٽرئفڪ کي Kubernetes ڏانهن منتقل ڪيو آهي. اسان اسان جي وسيلن لاء ڪم لوڊ ماڊلنگ سسٽم پڻ لاڳو ڪيو، جنهن جي پيچيدگي ڊولپرز کان لڪيل آهي. هاڻي اسان ڪلستر جي استحڪام کي يقيني بڻائڻ، ان کي اسڪيل ڪرڻ ۽ نون گراهڪن کي ڳنڍڻ تي ڌيان ڏنو آهي.

ڪبرنيٽس: پنٽرسٽ رستو

هڪ پليٽ فارم جي طور تي Pinterest جي پيماني تي Kubernetes سان شروع ڪرڻ جنهن کي اسان جا انجنيئر پسند ڪندا تمام گهڻن چئلينجن سان گڏ آيا.

هڪ وڏي ڪمپني جي طور تي، اسان انفراسٽرڪچر جي اوزارن ۾ وڏي پئماني تي سيڙپڪاري ڪئي آهي. مثالن ۾ سيڪيورٽي ٽولز شامل آهن جيڪي سرٽيفڪيشن جي پروسيسنگ ۽ اهم ورڇ کي سنڀاليندا آهن، ٽرئفڪ ڪنٽرول اجزاء، سروس دريافت سسٽم، نمائش جا حصا، ۽ لاگ ۽ ميٽرڪس ڊسپيچ اجزاء. اهو سڀ ڪجهه هڪ سبب لاءِ گڏ ڪيو ويو هو: اسان آزمائشي ۽ غلطي جي معمولي رستي مان گذريا هئاسين، ۽ ان ڪري اسان چاهيون ٿا ته هي سمورو سامان ڪبرنيٽس تي نئين انفراسٽرڪچر ۾ ضم ڪرڻ بدران پراڻي وهيل کي نئين پليٽ فارم تي بحال ڪرڻ بدران. هن طريقي مجموعي طور تي لڏپلاڻ کي آسان بڻائي ڇڏيو، ڇاڪاڻ ته سڀ ايپليڪيشن سپورٽ اڳ ۾ ئي موجود آهي ۽ شروع کان پيدا ٿيڻ جي ضرورت ناهي.

ٻئي طرف، خود ڪبرنيٽس ۾ لوڊ جي اڳڪٿي ڪرڻ جا ماڊل (جهڙوڪ نوڪريون، نوڪريون، ۽ ڊيمون سيٽ) اسان جي منصوبي لاءِ ڪافي نه آهن. اهي استعمال جا مسئلا ڪبرنيٽس ڏانهن منتقل ٿيڻ لاءِ وڏيون رڪاوٽون آهن. مثال طور، اسان ٻڌو آهي سروس ڊولپرز شڪايت ڪندا آهن ته گم ٿيل يا غلط لاگ ان سيٽنگون. اسان کي ٽيمپليٽ انجڻ جي غلط استعمال جو به سامنا ٿيو، جڏهن سوين ڪاپيون ساڳي وضاحت ۽ ڪم سان ٺاهيا ويا، جنهن جي نتيجي ۾ خوابن جي ڊيبگنگ جا مسئلا پيدا ٿيا.

ساڳئي ڪلستر ۾ مختلف نسخن کي برقرار رکڻ پڻ تمام ڏکيو هو. تصور ڪريو گراهڪ سپورٽ جي پيچيدگي جي صورت ۾ جيڪڏهن توهان کي ساڳئي وقت ڪم ڪرڻ جي ضرورت آهي ڪيترن ئي نسخن ۾ ساڳئي وقت جي ماحول ۾، انهن جي سڀني مسئلن، بگ ۽ تازه ڪاري سان.

Pinterest يوزر پراپرٽيز ۽ ڪنٽرولرز

اسان جي انجنيئرن لاءِ Kubernetes کي لاڳو ڪرڻ آسان بڻائڻ، ۽ اسان جي انفراسٽرڪچر کي آسان ۽ تيز ڪرڻ لاءِ، اسان پنهنجون ڪسٽم ريسورس وصفون (CRDs) تيار ڪيون آهن.

CRDs ھيٺ ڏنل ڪارڪردگي مهيا ڪن ٿا:

  1. مختلف مقامي ڪبرنيٽس وسيلن کي گڏ ڪرڻ ته جيئن اهي ڪم ڪن ٿا هڪ واحد ڪم لوڊ. مثال طور، PinterestService وسيلن ۾ شامل آهي هڪ مقرري، هڪ لاگ ان سروس، ۽ هڪ ترتيب وارو نقشو. هي ڊولپرز کي ڊي اين ايس قائم ڪرڻ بابت پريشان ٿيڻ جي اجازت ڏئي ٿو.
  2. ضروري ايپليڪيشن سپورٽ کي لاڳو ڪريو. صارف کي پنهنجي ڪاروباري منطق جي مطابق صرف ڪنٽينر جي وضاحتن تي ڌيان ڏيڻ جي ضرورت آهي، جڏهن ته CRD ڪنٽرولر سڀني ضروري شروعاتي ڪنٽينرز، ماحولياتي متغير ۽ پوڊ وضاحتن کي لاڳو ڪري ٿو. هي ڊولپرز لاءِ بنيادي طور تي مختلف سطح جو آرام فراهم ڪري ٿو.
  3. CRD ڪنٽرولرز پڻ مقامي وسيلن جي زندگي جي چڪر کي منظم ڪن ٿا ۽ ڊيبگ جي دستيابي کي بهتر ڪن ٿا. ھن ۾ مطلوب ۽ حقيقي وضاحتن کي گڏ ڪرڻ، CRD اسٽيٽس کي اپڊيٽ ڪرڻ ۽ واقعن جي لاگن کي برقرار رکڻ، ۽ وڌيڪ شامل آھي. CRD جي بغير، ڊولپرز کي مجبور ڪيو ويندو ڪيترن ئي وسيلن کي منظم ڪرڻ لاء، جيڪو صرف غلطي جو امڪان وڌائيندو.

هتي هڪ PinterestService ۽ هڪ اندروني وسيلن جو هڪ مثال آهي جيڪو اسان جي ڪنٽرولر طرفان منظم ڪيو ويو آهي:

Pinterest تي kubernetes پليٽ فارم ٺاهڻ

جيئن توهان مٿي ڏسي سگهو ٿا، هڪ ڪسٽم ڪنٽينر کي سپورٽ ڪرڻ لاءِ اسان کي هڪ init ڪنٽينر ۽ ڪيترن ئي اضافو کي ضم ڪرڻ جي ضرورت آهي سيڪيورٽي، نمائش، ۽ نيٽ ورڪ ٽرئفڪ مهيا ڪرڻ لاءِ. ان کان علاوه، اسان ٺاھيو آھي ترتيب واري نقشي جا ٽيمپليٽس ۽ لاڳو ڪيل سپورٽ PVC ٽيمپليٽس لاءِ بيچ جاب لاءِ، گڏو گڏ گھڻن ماحوليات جي متغيرن جي ٽريڪنگ کي ٽريڪ ڪرڻ لاءِ سڃاڻپ، وسيلن جي استعمال، ۽ ڪچرو گڏ ڪرڻ.

اهو تصور ڪرڻ مشڪل آهي ته ڊولپرز اهي ترتيب ڏيڻ واريون فائلون لکڻ چاهيندا سي آر ڊي جي مدد کان سواءِ هٿ سان، اڪيلو ڇڏي ڏيو وڌيڪ برقرار رکڻ ۽ ترتيبن کي ڊيبگ ڪرڻ.

ايپليڪيشن لڳائڻ وارو ڪم فلو

Pinterest تي kubernetes پليٽ فارم ٺاهڻ

مٿي ڏنل تصوير ڏيکاري ٿي Pinterest ڪسٽم ريسورس کي ڪبرنيٽس ڪلستر تي ڪيئن لڳايو وڃي:

  1. ڊولپر اسان جي ڪبرنيٽس ڪلستر سان CLI ۽ يوزر انٽرفيس ذريعي رابطو ڪن ٿا.
  2. CLI/UI ٽولز ورڪس فلو ترتيب YAML فائلون ۽ ٻيون بلڊ پراپرٽيز (ساڳي ورزن ID) کي آرٽيفيڪٽري مان حاصل ڪن ٿا ۽ پوءِ انھن کي جاب سبمشن سروس ۾ جمع ڪرايو. اهو قدم انهي ڳالهه کي يقيني بڻائي ٿو ته صرف پيداوار ورزن ڪلستر تائين پهچائي رهيا آهن.
  3. JSS مختلف پليٽ فارمن لاءِ گيٽ وي آهي، بشمول ڪبرنيٽس. هتي صارف جي تصديق ڪئي وئي آهي، ڪوٽا جاري ڪيا ويا آهن ۽ اسان جي CRD جي ترتيب کي جزوي طور تي چڪاس ڪيو ويو آهي.
  4. JSS پاسي تي CRD چيڪ ڪرڻ کان پوء، معلومات k8s پليٽ فارم API ڏانهن موڪليو ويو آهي.
  5. اسان جو CRD ڪنٽرولر سڀني صارفن جي وسيلن تي واقعن جي نگراني ڪري ٿو. اهو CRs کي مقامي k8s وسيلن ۾ تبديل ڪري ٿو، ضروري ماڊلز کي شامل ڪري ٿو، مناسب ماحوليات جي متغيرن کي سيٽ ڪري ٿو، ۽ ٻين سپورٽ ڪم کي انجام ڏئي ٿو ته ڪنٽينر ٿيل صارف ايپليڪيشنن کي ڪافي انفراسٽرڪچر سپورٽ حاصل ڪرڻ کي يقيني بڻائي.
  6. CRD ڪنٽرولر وري وصول ڪيل ڊيٽا کي Kubernetes API ڏانهن منتقل ڪري ٿو ته جيئن ان کي شيڊولر طرفان پروسيس ڪري سگهجي ۽ پيداوار ۾ وجهي سگهجي.

ويچاري: هي اڳڀرائي جي ڪم جي وهڪري جي مقرري جي نئين k8s پليٽ فارم جي پهرين استعمال ڪندڙن لاء پيدا ڪيو ويو. اسان هن وقت هن عمل کي بهتر ڪرڻ جي عمل ۾ آهيون مڪمل طور تي اسان جي نئين CI/CD سان ضم ٿيڻ لاءِ. ان جو مطلب اهو آهي ته اسان توهان کي ڪبرنيٽس سان لاڳاپيل سڀ ڪجهه نٿا ٻڌائي سگهون. اسان اڳتي هلي پنهنجي تجربي ۽ ٽيم جي اڳڀرائي کي اسان جي ايندڙ بلاگ پوسٽ ۾ شيئر ڪرڻ جا منتظر آهيون، “Pinterest لاءِ CI/CD پليٽ فارم ٺاهڻ”.

خاص وسيلن جا قسم

Pinterest جي مخصوص ضرورتن جي بنياد تي، اسان مختلف ڪم فلوز کي پورو ڪرڻ لاءِ ھيٺيون CRDs تيار ڪيون آھن:

  • PinterestService بي رياست خدمتون آهن جيڪي هڪ ڊگهي وقت تائين هلنديون آهن. اسان جا ڪيترائي بنيادي سسٽم اهڙين خدمتن جي هڪ سيٽ تي ٻڌل آهن.
  • PinterestJobSet ماڊل مڪمل سائيڪل بيچ نوڪريون. Pinterest تي ھڪڙو عام منظر آھي ته گھڻن نوڪريون ساڳيا ڪنٽينرز کي متوازي طور تي هلائيندا آھن، ٻين ساڳين عملن کان سواء.
  • PinterestCronJob وڏي پئماني تي استعمال ڪيو ويندو آهي گڏ ڪرڻ سان گڏ ننڍي وقتي لوڊ. هي پنٽرسٽ سپورٽ ميڪانيزم سان مقامي ڪرون ڪم لاءِ هڪ لفافي آهي جيڪي سيڪيورٽي، ٽرئفڪ، لاگز ۽ ميٽرڪس جا ذميوار آهن.
  • PinterestDaemon ۾ انفراسٽرڪچر ڊيمون شامل آهن. هي خاندان وڌندو رهي ٿو جيئن اسان اسان جي ڪلستر ۾ وڌيڪ مدد شامل ڪندا آهيون.
  • PinterestTrainingJob Tensorflow ۽ Pytorch جي عملن تائين پکڙيل آهي، ساڳئي سطح جي رن ٽائم سپورٽ مهيا ڪري ٿي جيئن ٻين سڀني CRDs. جيئن ته Pinterest فعال طور تي استعمال ڪري ٿو Tensorflow ۽ ٻيا مشين لرننگ سسٽم، اسان وٽ انهن جي چوڌاري هڪ الڳ CRD ٺاهڻ جو سبب هو.

اسان PinterestStatefulSet تي پڻ ڪم ڪري رهيا آهيون، جيڪو جلد ئي ڊيٽا گودامن ۽ ٻين رياستي نظامن لاءِ ترتيب ڏنو ويندو.

رن ٽائم سپورٽ

جڏهن هڪ ايپليڪيشن پوڊ Kubernetes تي هلندو آهي، اهو خودڪار طور تي پاڻ کي سڃاڻڻ لاء هڪ سرٽيفڪيٽ حاصل ڪري ٿو. ھي سرٽيفڪيٽ استعمال ڪيو ويندو آھي ڳجھي اسٽوريج تائين پھچڻ لاءِ يا mTLS ذريعي ٻين خدمتن سان رابطو ڪرڻ لاءِ. ان کان علاوه، ڪنٽينر انٽ ڪنفيگريٽر ۽ ڊيمون ڪنٽينر ٿيل ايپليڪيشن کي هلائڻ کان پهريان سڀني ضروري انحصار کي ڊائون لوڊ ڪندو. جڏهن سڀ ڪجهه تيار ٿي ويندو، ٽرئفڪ سائڊ ڪار ۽ ڊيمون اسان جي زوڪيپر سان ماڊل جي IP پتي کي رجسٽر ڪندا ته جيئن گراهڪ ان کي ڳولي سگهن. هي سڀ ڪم ڪندو ڇو ته ايپليڪيشن شروع ٿيڻ کان اڳ نيٽ ورڪ ماڊل ترتيب ڏنو ويو هو.

مٿين ڪم لوڊ لاءِ رن ٽائم سپورٽ جا عام مثال آهن. ڪم لوڊ جي ٻين قسمن کي ٿورڙي مختلف سپورٽ جي ضرورت ٿي سگھي ٿي، پر اهي سڀئي پوڊ-سطح سائڊ ڪارز، نوڊ-سطح يا ورچوئل مشين-سطح ڊيمن جي صورت ۾ اچن ٿيون. اسان پڪ ڪريون ٿا ته هي سڀ انتظام جي بنيادي ڍانچي جي اندر لڳايو ويو آهي ۽ ايپليڪيشنن ۾ هڪجهڙائي رکي ٿو، جيڪو آخرڪار ٽيڪنيڪل ڪم ۽ گراهڪ جي مدد جي لحاظ کان بوجھ کي گهٽائي ٿو.

جاچ ۽ QA

اسان موجوده ڪبرنيٽس ٽيسٽ انفراسٽرڪچر جي چوٽي تي آخر کان آخر تائين ٽيسٽ پائپ لائن ٺاهي. اهي تجربا اسان جي سڀني ڪلستر تي لاڳو ٿين ٿا. اسان جي پائپ لائن ڪيترن ئي ترميمن مان گذري وئي ان کان اڳ جو اهو پراڊڪٽ ڪلستر جو حصو بڻجي ويو.

ٽيسٽنگ سسٽم کان علاوه، اسان وٽ نگراني ۽ الرٽ سسٽم آهن جيڪي مسلسل سسٽم جي اجزاء، وسيلن جي استعمال ۽ ٻين اهم اشارن جي صورتحال جي نگراني ڪن ٿا، اسان کي اطلاع ڏين ٿا صرف جڏهن انساني مداخلت ضروري آهي.

متبادل

اسان ڪجهه متبادلن تي غور ڪيو ته ڪسٽم وسيلن، جهڙوڪ ميوٽيشن رسائي ڪنٽرولرز ۽ ٽيمپليٽ سسٽم. بهرحال، اهي سڀ اهم آپريشنل چئلينجن سان گڏ اچن ٿا، تنهنڪري اسان CRD جو رستو چونڊيو.

هڪ ميوٽيشنل داخلا ڪنٽرولر استعمال ڪيو ويو سائڊ ڪارز، ماحولياتي متغير، ۽ ٻين رن ٽائم سپورٽ کي متعارف ڪرائڻ لاءِ. تنهن هوندي، ان کي مختلف مسئلن کي منهن ڏيڻو پيو، جهڙوڪ وسيلن جي پابند ۽ لائف سائيڪل جو انتظام، جتي اهڙا مسئلا CRD ۾ پيدا نه ٿيندا آهن.

نوٽ: ٽيمپليٽ سسٽم جهڙوڪ هيلم چارٽس پڻ وڏي پيماني تي استعمال ڪيا ويندا آهن ايپليڪيشنن کي هلائڻ لاءِ ساڳي ترتيب سان. بهرحال، اسان جي ڪم جون ايپليڪيشنون تمام گهڻيون متنوع آهن جن کي ٽيمپليٽ استعمال ڪندي منظم ڪيو وڃي. انهي سان گڏ مسلسل ترتيب ڏيڻ دوران ٽيمپليٽ استعمال ڪرڻ وقت تمام گهڻيون غلطيون هونديون.

ايندڙ ڪم

اسان هن وقت اسان جي سڀني ڪلسترن ۾ مخلوط لوڊ سان ڪم ڪري رهيا آهيون. مختلف قسمن ۽ سائزن جي اهڙي عمل کي سپورٽ ڪرڻ لاءِ، اسان هيٺين علائقن ۾ ڪم ڪريون ٿا:

  • ڪلسترن جو مجموعو مختلف ڪلسترن ۾ وڏين ايپليڪيشنن کي تقسيم ڪري ٿو اسڪاليبلٽي ۽ استحڪام لاءِ.
  • ايپليڪيشن ڪنيڪشن ۽ SLAs ٺاهڻ لاءِ ڪلسٽر جي استحڪام، اسڪاليبلٽي ۽ نمائش کي يقيني بڻائڻ.
  • وسيلن ۽ ڪوٽا کي منظم ڪرڻ ته جيئن ايپليڪيشنون هڪ ٻئي سان تڪرار نه ڪن، ۽ ڪلستر جي پيماني تي اسان جي حصي تي ڪنٽرول آهي.
  • Kubernetes تي ايپليڪيشنن کي سپورٽ ۽ ترتيب ڏيڻ لاءِ هڪ نئون CI/CD پليٽ فارم.

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

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