په Pinterest کې د kubernetes پلیټ فارم جوړول

په تیرو کلونو کې، د Pinterest 300 ملیون کاروونکو په 200 ملیارد بورډونو کې له 4 ملیارد څخه ډیر پنونه جوړ کړي دي. د کاروونکو دې اردو او د مینځپانګې پراخه اساس ته خدمت کولو لپاره ، پورټل زرګونه خدمات رامینځته کړي ، د مایکرو خدماتو څخه نیولې چې د یو څو CPUs لخوا اداره کیدی شي ، تر لوی مونولیتونو پورې چې د مجازی ماشینونو په ټوله بیړۍ کې پرمخ ځي. او بیا هغه شیبه راغله کله چې د شرکت سترګې په k8s باندې راوتلې. ولې "کیوب" په Pinterest کې ښه ښکاري؟ تاسو به پدې اړه زموږ د وروستي مقالې ژباړې څخه زده کړئ بلاګ Pinterest انجنیري.

په Pinterest کې د kubernetes پلیټ فارم جوړول

نو، په سلګونو ملیون کاروونکي او په سلګونو ملیارد پنونه. د کاروونکو دې اردو او پراخه مینځپانګې اساس ته د خدمت کولو لپاره ، موږ زرګونه خدمات رامینځته کړي ، د مایکرو خدماتو څخه نیولې چې د یو څو CPUs لخوا اداره کیدی شي ، تر لوی مونولیټس پورې چې د مجازی ماشینونو په ټولو بیړیو کې چلیږي. سربیره پردې، موږ مختلف چوکاټونه لرو چې کیدای شي CPU، حافظې، یا I/O لاسرسي ته هم اړتیا ولري.

د وسایلو د دې ژوبڼ په ساتلو کې، پراختیایی ټیم د یو شمیر ننګونو سره مخ دی:

  • د انجنیرانو لپاره د تولید چاپیریال چلولو لپاره یوشان لاره شتون نلري. بې دولت خدمتونه، دولتي خدمتونه او د فعالې پراختیا لاندې پروژې په بشپړ ډول د مختلف ټیکنالوژۍ سټیکونو پراساس دي. دا د انجینرانو لپاره د بشپړ روزنې کورس رامینځته کولو لامل شو ، او زموږ د زیربنا ټیم کار په جدي ډول پیچلی کوي.
  • پراختیا کونکي د خپل مجازی ماشینونو بیړۍ سره په داخلي مدیرانو لوی بار رامینځته کوي. د پایلې په توګه، داسې ساده عملیات لکه د OS یا AMI تازه کول اونۍ او میاشتې وخت نیسي. دا په ښکاره ډول په ورځني حالتونو کې د کار بار زیاتوالي لامل کیږي.
  • د موجوده حلونو په سر کې د نړیوال زیربنا مدیریت وسیلو رامینځته کولو کې ستونزې. وضعیت د دې حقیقت له امله نور هم پیچلی دی چې د مجازی ماشینونو مالکینو موندل اسانه ندي. دا، موږ نه پوهیږو چې ایا دا ظرفیت زموږ د زیربنا په نورو برخو کې د کار کولو لپاره په خوندي ډول استخراج کیدی شي.

د کانټینر آرکیسټریشن سیسټمونه د کاري بار مدیریت د متحد کولو یوه لاره ده. دوی د پراختیا سرعت زیاتولو او د زیربنا مدیریت ساده کولو لپاره دروازه پرانیزي، ځکه چې په پروژه کې ښکیل ټولې سرچینې د یو مرکزي سیسټم لخوا اداره کیږي.

په Pinterest کې د kubernetes پلیټ فارم جوړول

شکل 1: د زیربنا لومړیتوبونه (د اعتبار، پراختیا ورکوونکي تولید، او موثریت).

په Pinterest کې د کلاوډ مدیریت پلیټ فارم ټیم په 8 کې K2017s کشف کړل. د 2017 په لومړۍ نیمایي کې، موږ د API او زموږ ټولو ویب سرورونو په ګډون زموږ د تولید ډیری وړتیاوې مستند کړي. وروسته، موږ د کانټینر حلونو تنظیم کولو، د کلسترونو جوړولو او د دوی سره کار کولو لپاره د مختلفو سیسټمونو بشپړه ارزونه ترسره کړه. د 2017 په پای کې، موږ پریکړه وکړه چې Kubernetes وکاروو. دا د پراختیا کونکي ټولنې کې خورا انعطاف منونکی او په پراخه کچه ملاتړ شوی و.

تر نن نیټې پورې، موږ د کوپس پر بنسټ خپل د کلستر بوټ وسایل جوړ کړي او د زیربناوو موجوده برخې لکه شبکه کول، امنیت، میټریک، لاګنګ، د پیژندنې مدیریت، او ټرافیک Kubernetes ته لیږدول شوي. موږ د خپلې سرچینې لپاره د کاري بار ماډلینګ سیسټم هم پلي کړی ، د کوم پیچلتیا له پراختیا کونکو څخه پټ دی. اوس موږ د کلستر ثبات یقیني کولو، د هغې اندازه کولو او د نوي پیرودونکو سره نښلولو تمرکز کوو.

Kubernetes: د Pinterest لاره

د یو پلیټ فارم په توګه د Pinterest په پیمانه د Kubernetes سره پیل کول چې زموږ انجینران یې خوښوي د ډیرو ننګونو سره مخ شوي.

د یو لوی شرکت په توګه، موږ د زیربناوو په وسیلو کې ډیره پانګونه کړې. په مثالونو کې امنیتي وسیلې شاملې دي چې د سند پروسس او کلیدي توزیع اداره کوي ، د ترافیک کنټرول برخې ، د خدماتو کشف سیسټمونه ، د لید اجزا ، او د لاګ او میټریک لیږد اجزا. دا ټول د یو دلیل لپاره راټول شوي وو: موږ د آزموینې او تېروتنې عادي لارې ته لاړو، او له همدې امله موږ غوښتل چې دا ټول تجهیزات په نوي پلیټ فارم کې د زاړه څرخ د بیا رغولو پرځای په کوبرنیټس کې نوي زیربنا کې مدغم کړو. دا طریقه په ټولیز ډول مهاجرت ساده کړی، ځکه چې د غوښتنلیک ټول ملاتړ لا دمخه شتون لري او اړتیا نلري چې له پیل څخه جوړ شي.

له بلې خوا، پخپله کوبرنیټس کې د بار وړاندوینې ماډلونه (لکه ګمارنې، دندې، او ډیمون سیټونه) زموږ د پروژې لپاره کافي ندي. دا د کارونې مسلې د کبرنیټس ته د تګ لپاره لوی خنډونه دي. د مثال په توګه، موږ اوریدلي چې د خدماتو پراختیا کونکي د ورک شوي یا غلط ننوتلو ترتیباتو په اړه شکایت کوي. موږ د ټیمپلیټ انجنونو ناسم کارونې سره هم مخ شو، کله چې په سلګونو کاپي د ورته ځانګړتیاو او دندې سره رامینځته شوي، چې د شپې خوبونو د ډیبګ کولو ستونزې پایله درلوده.

په ورته کلستر کې د مختلف نسخو ساتل هم خورا ستونزمن وو. د پیرودونکو مالتړ پیچلتیا تصور کړئ که تاسو اړتیا لرئ د ورته وخت چاپیریال ډیری نسخو کې په ورته وخت کې کار وکړئ ، د دوی ټولو ستونزو ، بګونو او تازه معلوماتو سره.

د Pinterest کاروونکي ملکیتونه او کنټرولرونه

د دې لپاره چې زموږ انجینرانو ته د Kubernetes پلي کول اسانه کړي، او زموږ زیربنا ساده او ګړندۍ کړي، موږ خپل د ګمرکي سرچینو تعریفونه (CRDs) جوړ کړي دي.

CRDs لاندې فعالیت وړاندې کوي:

  1. د مختلف اصلي Kubernetes سرچینې یوځای کول ترڅو دوی د یو واحد کاري بار په توګه کار وکړي. د مثال په توګه، د PinterestService سرچینې کې ځای پرځای کول، د ننوتلو خدمت، او د ترتیب کولو نقشه شامله ده. دا پراختیا کونکو ته اجازه ورکوي چې د DNS تنظیم کولو په اړه اندیښنه ونلري.
  2. د غوښتنلیک اړین ملاتړ پلي کول. کاروونکي اړتیا لري چې یوازې د کانټینر مشخصاتو باندې د دوی د سوداګرۍ منطق سره سم تمرکز وکړي، پداسې حال کې چې د CRD کنټرولر ټول اړین ابتدايي کانټینرونه، د چاپیریال تغیرات او د پوډ مشخصات پلي کوي. دا د پراختیا کونکو لپاره د آرامۍ اساسا مختلف کچې چمتو کوي.
  3. د CRD کنټرولر د اصلي سرچینو ژوند دوره هم اداره کوي او د ډیبګ شتون ته وده ورکوي. پدې کې د مطلوب او ریښتیني مشخصاتو پخلی کول ، د CRD حالت تازه کول او د پیښو لاګ ساتل ، او نور ډیر څه شامل دي. د CRD پرته، پراختیا کونکي به مجبور شي چې ډیری سرچینې اداره کړي، کوم چې یوازې د غلطۍ احتمال زیاتوي.

دلته د PinterestService او داخلي سرچینې یوه بیلګه ده چې زموږ د کنټرولر لخوا اداره کیږي:

په Pinterest کې د kubernetes پلیټ فارم جوړول

لکه څنګه چې تاسو پورته لیدلی شئ، د دودیز کانټینر مالتړ لپاره موږ اړتیا لرو چې د انټ کانټینر او څو اضافو سره یوځای کړو ترڅو امنیت، لید، او د شبکې ترافیک چمتو کړو. برسېره پردې، موږ د ترتیب کولو نقشې ټیمپلیټونه جوړ کړل او د بیچ دندو لپاره د PVC ټیمپلیټونو لپاره ملاتړ پلي کړ، په بیله بیا د پیژندنې، د سرچینو مصرف، او د کثافاتو راټولولو تعقیب لپاره د ډیری چاپیریال متغیرونو تعقیب.

دا تصور کول ګران دي چې پراختیا کونکي به وغواړي د CRD ملاتړ پرته د لاس په واسطه دا تشکیلاتي فایلونه ولیکي ، پریږدئ چې نور تشکیلات ساتل او ډیبګ کړئ.

د غوښتنلیک ځای پرځای کولو کاري جریان

په Pinterest کې د kubernetes پلیټ فارم جوړول

پورته عکس ښیې چې څنګه د کوبرنیټس کلستر ته د Pinterest ګمرکي سرچینې ځای په ځای کول:

  1. پراختیا کونکي زموږ د کوبرنیټس کلستر سره د CLI او کارن انٹرفیس له لارې متقابل عمل کوي.
  2. د CLI/UI وسیلې د کار فلو ترتیب YAML فایلونه او نور ساختماني ملکیتونه (ورته نسخه ID) له هنري فابریکې څخه ترلاسه کوي او بیا یې د دندې سپارلو خدمت ته وسپاري. دا ګام ډاډ ورکوي چې یوازې د تولید نسخې کلستر ته سپارل کیږي.
  3. JSS د مختلفو پلیټ فارمونو لپاره دروازه ده، په شمول د Kubernetes. دلته د کارونکي تصدیق کیږي، کوټې جاري کیږي او زموږ د CRD ترتیب په جزوي توګه چک شوی.
  4. د JSS اړخ کې د CRD چک کولو وروسته، معلومات د k8s پلیټ فارم API ته لیږل کیږي.
  5. زموږ د CRD کنټرولر د ټولو کاروونکو سرچینو پیښو څارنه کوي. دا CRs په اصلي k8s سرچینو بدلوي، اړین ماډلونه اضافه کوي، مناسب چاپیریال متغیرات ټاکي، او نور مالتړ کار ترسره کوي ترڅو ډاډ ترلاسه کړي چې کانټینر شوي کاروونکي غوښتنلیکونه کافي زیربنا ملاتړ لري.
  6. د CRD کنټرولر بیا ترلاسه شوي ډاټا د Kubernetes API ته لیږدوي ترڅو دا د مهالویش لخوا پروسس شي او تولید ته یې واچول شي.

تبصره: د ګمارنې دا د خپریدو دمخه کاري جریان د نوي k8s پلیټ فارم لومړي کاروونکو لپاره رامینځته شوی. موږ اوس مهال د دې پروسې د اصلاح کولو په حال کې یو ترڅو زموږ د نوي CI/CD سره بشپړ یوځای شي. دا پدې مانا ده چې موږ نشو کولی تاسو ته د Kubernetes پورې اړوند هرڅه ووایو. موږ په دې لار کې زموږ د تجربې او ټیم پرمختګ زموږ په راتلونکي بلاګ پوسټ کې شریکولو ته سترګې په لار یو، "د Pinterest لپاره د CI/CD پلیټ فارم جوړول."

د ځانګړو سرچینو ډولونه

د Pinterest د ځانګړو اړتیاو پراساس، موږ لاندې CRDs رامینځته کړي ترڅو د مختلف کاري جریانونو سره سم وي:

  • د PinterestService بې ریاست خدمتونه دي چې د اوږدې مودې لپاره روان دي. زموږ ډیری اصلي سیسټمونه د داسې خدماتو یو سیټ پراساس دي.
  • د PinterestJobSet ماډل د بشپړ دورې بیچ دندې. په Pinterest کې یو عام سناریو دا ده چې ډیری دندې ورته کانټینرونه په موازي توګه پرمخ وړي، پرته له دې چې ورته ورته پروسو ته پام وکړي.
  • PinterestCronJob په پراخه کچه د کوچني دوراني بارونو سره په ګډه کارول کیږي. دا د Pinterest مالتړ میکانیزمونو سره د اصلي کرون کار لپاره یو ریپر دی چې د امنیت، ترافیک، لاګونو او میټریکونو مسولیت لري.
  • د PinterestDaemon زیربنا ډیمون شامل دي. دا کورنۍ وده کوي ځکه چې موږ خپلو کلسترونو ته نور ملاتړ اضافه کوو.
  • د PinterestTrainingJob د Tensorflow او Pytorch پروسو ته پراختیا ورکوي، د نورو ټولو CRDs په څیر د چلولو وخت ورته ورته کچه چمتو کوي. څرنګه چې Pinterest په فعاله توګه د Tensorflow او د ماشین زده کړې نور سیسټمونه کاروي، موږ د دوی په شاوخوا کې د جلا CRD جوړولو لپاره یو دلیل درلود.

موږ د PinterestStatefulSet باندې هم کار کوو، چې ډیر ژر به د ډیټا ګودامونو او نورو دولتي سیسټمونو لپاره تطبیق شي.

د چلولو وخت ملاتړ

کله چې د اپلیکیشن پوډ په کوبرنیټس چلیږي ، نو دا په اوتومات ډول د ځان پیژندلو لپاره سند ترلاسه کوي. دا سند د پټو ذخیره کولو یا نورو خدماتو سره د mTLS له لارې د خبرو اترو لپاره کارول کیږي. په ورته وخت کې ، د کانټینر انیټ تنظیم کوونکی او ډیمون به د کانټینر شوي غوښتنلیک چلولو دمخه ټول اړین انحصارونه ډاونلوډ کړي. کله چې هرڅه چمتو وي، د ټرافیک سایډ کار او ډیمون به زموږ د زوکیپر سره د ماډل IP پته ثبت کړي ترڅو پیرودونکي یې ومومي. دا ټول به کار وکړي ځکه چې د شبکې ماډل د غوښتنلیک په لاره اچولو دمخه تنظیم شوی و.

پورته د کاري بارونو لپاره د چلولو وخت مالتړ ځانګړي مثالونه دي. د کاري بارونو نور ډولونه ممکن یو څه مختلف ملاتړ ته اړتیا ولري ، مګر دا ټول د پوډ کچې ساډکارونو ، نوډ کچې یا مجازی ماشین کچې ډیمونونو په شکل کې راځي. موږ ډاډ ترلاسه کوو چې دا ټول د مدیریت زیربنا کې ځای په ځای شوي او د غوښتنلیکونو په اوږدو کې یو شان دي، کوم چې په نهایت کې د تخنیکي کار او پیرودونکو مالتړ شرایطو کې د پام وړ بار کموي.

ازموینه او QA

موږ د موجود کوبرنیټس ازموینې زیربنا په سر کې د پای څخه تر پای پورې ازموینې پایپ لاین جوړ کړ. دا ازموینې زموږ په ټولو کلسترونو کې پلي کیږي. زموږ پایپ لاین د ډیری بیاکتنې څخه تیر شو مخکې لدې چې دا د محصول کلستر برخه شي.

د ازموینې سیسټمونو سربیره ، موږ د څارنې او خبرتیا سیسټمونه لرو چې په دوامداره توګه د سیسټم اجزاو حالت ، د سرچینو مصرف او نور مهم شاخصونه څاري ، یوازې موږ ته خبر راکوي کله چې انساني مداخله اړینه وي.

بدیلونه

موږ د ګمرکي سرچینو لپاره ځینې بدیلونه ولیدل، لکه د بدلون لاسرسي کنټرولرونه او د ټیمپلیټ سیسټمونه. په هرصورت، دا ټول د پام وړ عملیاتي ننګونو سره راځي، نو موږ د CRD لاره غوره کړه.

د متقابل داخلې کنټرولر د سایډکارونو ، چاپیریال متغیرونو ، او نور د وخت ملاتړ معرفي کولو لپاره کارول شوی و. په هرصورت، دا د مختلفو ستونزو سره مخ دی، لکه د سرچینو پابند او د ژوند دورې مدیریت، چیرته چې دا ډول ستونزې په CRD کې نه رامنځته کیږي.

نوټ: د ټیمپلیټ سیسټمونه لکه هیلم چارټونه هم په پراخه کچه د ورته ترتیبونو سره د غوښتنلیکونو چلولو لپاره کارول کیږي. په هرصورت، زموږ کاري غوښتنلیکونه خورا متفاوت دي چې د ټیمپلیټونو په کارولو سره اداره کیږي. همدارنګه د دوامداره ګمارنې پرمهال به د ټیمپلیټ کارولو په وخت کې ډیرې غلطۍ وي.

راتلونکی کار

موږ دا مهال زموږ په ټولو کلسترونو کې د مخلوط بار سره معامله کوو. د مختلفو ډولونو او اندازو د داسې پروسو مالتړ لپاره، موږ په لاندې برخو کې کار کوو:

  • د کلسترونو ټولګه د توزیع او ثبات لپاره په مختلف کلسترونو کې لوی غوښتنلیکونه توزیع کوي.
  • د اپلیکیشن ارتباط او SLAs رامینځته کولو لپاره د کلستر ثبات ، توزیع او لید ډاډ ترلاسه کول.
  • د سرچینو او کوټو اداره کول ترڅو غوښتنلیکونه له یو بل سره ټکر ونه کړي، او د کلستر اندازه زموږ په برخه کې کنټرول کیږي.
  • په Kubernetes کې د غوښتنلیکونو ملاتړ او پلي کولو لپاره یو نوی CI/CD پلیټ فارم.

سرچینه: www.habr.com

Add a comment