د k8s لپاره د تولید لپاره چمتو شوي عکسونه

دا کیسه د دې په اړه ده چې څنګه موږ د تولید چاپیریال کې کانټینرونه کاروو، په ځانګړې توګه کبرنیټس. مقاله د کانټینرونو څخه د میټریکونو او لاګونو راټولولو او همدارنګه د عکسونو جوړولو ته وقف شوې ده.

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

موږ د فینټیک شرکت Exness څخه یو، کوم چې د B2B او B2C لپاره د آنلاین سوداګرۍ او فنټیک محصولاتو لپاره خدمتونه رامینځته کوي. زموږ R&D ډیری بیلابیل ټیمونه لري، د پراختیا څانګه 100+ کارمندان لري.

موږ د هغه ټیم استازیتوب کوو چې زموږ د پراختیا کونکو لپاره د کوډ راټولولو او چلولو لپاره د پلیټ فارم مسؤلیت لري. په ځانګړې توګه، موږ د غوښتنلیکونو څخه د میټریکونو، لاګونو، او پیښو راټولولو، ذخیره کولو او راپور ورکولو مسولیت لرو. موږ دا مهال د تولید چاپیریال کې شاوخوا درې زره ډاکر کانټینرونه چلوو ، زموږ د 50 TB لوی ډیټا ذخیره ساتو ، او معماري حلونه چمتو کوو چې زموږ د زیربنا شاوخوا رامینځته شوي: کوبرنیټس ، رینچر ، او مختلف عامه کلاوډ چمتو کونکي. 

زموږ هڅونه

څه سوځي؟ هیڅوک ځواب نشي کولی. چرګ چیرته دی؟ دا سخته ده چې پوه شي. کله اور لګېدلی؟ تاسو کولی شئ ومومئ، مګر سمدلاسه نه. 

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

ولې ځینې کانټینرونه ولاړ دي پداسې حال کې چې نور راوتلي دي؟ کوم کانټینر ملامت و؟ په هرصورت، د کانتینرونو بهر یو شان دي، مګر دننه هر یو خپل نیو لري.

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

زموږ پراختیا کونکي وړ هلکان دي. دوی ښه خدمات وړاندې کوي چې شرکت ته ګټه رسوي. مګر ناکامي شتون لري کله چې د غوښتنلیکونو سره کانټینرونه ګمراه شي. یو کانټینر ډیر CPU مصرفوي، بل شبکه مصرفوي، دریم د I/O عملیات مصرفوي، او څلورم په بشپړه توګه روښانه نده چې دا د ساکټونو سره څه کوي. دا ټول سقوط کوي او کښتۍ ډوبیږي. 

اجنټان

د دې لپاره چې پوه شي چې دننه څه پیښیږي، موږ پریکړه وکړه چې اجنټان مستقیم په کانتینرونو کې ځای په ځای کړو.

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

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

زموږ په قضیه کې، اجنټان باید لاګونه په معیاري بڼه چمتو کړي، ټګ شوي او ټرټل شوي. دوی باید موږ ته معیاري میټریکونه هم چمتو کړي چې د سوداګرۍ غوښتنلیک له لید څخه د توزیع وړ دي.

اجنټ د عملیاتو او ساتنې لپاره اسانتیاوې هم معنی لري چې کولی شي په مختلف آرکیسټریشن سیسټمونو کې کار وکړي چې د مختلف عکسونو ملاتړ کوي (Debian، Alpine، Centos، او نور).

په نهایت کې ، اجنټان باید د ساده CI/CD ملاتړ وکړي چې پکې د ډاکر فایلونه شامل دي. که نه نو، کښتۍ به ټوټه ټوټه شي، ځکه چې کانټینرونه به د "ټیټ" ریلونو سره لیږدول پیل شي.

د پروسې جوړول او د هدف عکس وسیله

د دې لپاره چې هرڅه معیاري او اداره شي، یو ډول معیاري جوړونې پروسې تعقیب ته اړتیا لري. له همدې امله، موږ پریکړه وکړه چې د کانتینرونو په واسطه کانتینرونه راټول کړو - دا تکرار دی.

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

دلته کانتینرونه د کلکو بڼو په واسطه ښودل شوي. په ورته وخت کې ، دوی پریکړه وکړه چې په دوی کې د توزیع کټونه واچوي ترڅو "ژوند د راسبیري په څیر نه بریښي." ولې دا کار وشو، موږ به لاندې تشریح کړو.
 
پایله د جوړونې وسیله ده - یو نسخه ځانګړي کانټینر چې د ځانګړي توزیع نسخو او ځانګړي سکریپټ نسخو ته اشاره کوي.

څنګه یې وکاروو؟ موږ د ډاکر هب لرو چې یو کانټینر لري. موږ دا زموږ په سیسټم کې دننه منعکس کوو ترڅو د بهرني انحصار څخه ځان خلاص کړو. پایله یو کانټینر دی چې په ژیړ کې نښه شوی. موږ یو ټیمپلیټ رامینځته کوو ترڅو ټول توزیع او سکریپټونه نصب کړو چې موږ ورته اړتیا لرو په کانټینر کې. له هغې وروسته، موږ د کارونې لپاره چمتو انځور راټولوو: پراختیا کونکي کوډ او ځینې خپل ځانګړي انحصارونه په دې کې اچوي. 

د دې طریقې په اړه څه ښه دي؟ 

  • لومړی، د جوړونې وسیلو بشپړ نسخه کنټرول - د کانټینر جوړول، سکریپټ او د توزیع نسخه. 
  • دوهم، موږ معیاري کول ترلاسه کړي دي: موږ په ورته ډول ټیمپلیټونه، منځني او د کارونې لپاره چمتو انځور جوړوو. 
  • دریم، کانتینرونه موږ ته د لیږد وړتیا راکوي. نن ورځ موږ ګیټلاب کاروو، او سبا به موږ ټیم سیټي یا جینکنز ته لاړ شو او موږ به وکولی شو خپل کانټینرونه په ورته ډول پرمخ یوسو. 
  • څلورم، د انحصار کمول. دا کومه تصادفي نه وه چې موږ په کانټینر کې د توزیع کټونه واچوو، ځکه چې دا موږ ته اجازه راکوي چې هر وخت له انټرنیټ څخه د دوی ډاونلوډ کولو څخه مخنیوی وکړو. 
  • پنځم، د جوړولو سرعت ډیر شوی - د عکسونو د محلي کاپي شتون تاسو ته اجازه درکوي چې په ډاونلوډ کولو کې د وخت ضایع کولو څخه مخنیوی وکړئ، ځکه چې ځایی عکس شتون لري. 

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

زموږ د جوړولو طرزالعمل څنګه کار کوي

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

مجلس د یوې کمانډ سره پیل شوی ، پروسه په عکس کې اجرا کیږي (په سور کې روښانه شوی). پراختیا کونکی د ډاکر فایل لري (په ژیړ کې روښانه شوی) ، موږ یې وړاندې کوو ، د ارزښتونو سره متغیرونه ځای په ځای کوو. او د لارې په اوږدو کې موږ سرلیکونه او فوټرونه اضافه کوو - دا زموږ اجنټان دي. 

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

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

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

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

 د k8s لپاره د تولید لپاره چمتو شوي عکسونه

د ورته کانټینر لپاره موږ په ډاکر او کبرنیټس کې مختلف پروسې ونې ترلاسه کوو:

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

تادیه د S6 تر څارنې لاندې اجرا کیږي. راټولونکي او پیښو ته پام وکړئ - دا زموږ اجنټان دي چې د لاګونو او میټریکونو مسؤل دي. Kubernetes دوی نلري، مګر ډاکر لري. ولې؟ 

که موږ د "پوډ" مشخصات وګورو (له دې وروسته - د کوبرنیټس پوډ)، موږ به وګورو چې د پیښو کانټینر په پوډ کې اعدام شوی، کوم چې یو جلا راټولونکی کانټینر لري چې د میټریکونو او لاګونو راټولولو دنده ترسره کوي. موږ کولی شو د Kubernetes وړتیا وکاروو: په یوه پوډ کې د کانټینرونو چلول، په یوه پروسه او / یا د شبکې ځای کې. په حقیقت کې خپل استازي معرفي کړئ او ځینې دندې ترسره کړئ. او که ورته کانټینر په ډاکر کې پیل شي ، نو دا به د محصول په څیر ټول ورته وړتیاوې ترلاسه کړي ، دا به د دې وړتیا ولري چې لاګونه او میټریکونه وړاندې کړي ، ځکه چې اجنټان به په داخلي توګه پیل شي. 

میټریکونه او لاګونه

د میټریکونو او لاګونو وړاندې کول یو پیچلی کار دی. د هغې پریکړې څو اړخونه شتون لري.
زیربنا د تادیاتو اجرا کولو لپاره رامینځته شوې ، نه د لوګو د ډله ایز تحویل لپاره. دا دی ، دا پروسه باید د لږترلږه کانټینر سرچینو اړتیاو سره ترسره شي. موږ هڅه کوو چې زموږ د پراختیا کونکو سره مرسته وکړو: "د ډاکر هب کانټینر ترلاسه کړئ ، چل کړئ ، او موږ کولی شو لاګونه وړاندې کړو." 

دوهم اړخ د لاګونو حجم محدودوي. که چیرې د لاګونو په حجم کې زیاتوالی په څو کانټینرونو کې رامینځته شي (اپلیکیشن په لوپ کې د سټیک ټریس تولیدوي) ، په CPU ، مخابراتي چینلونو او د لاګ پروسس کولو سیسټم باندې بار ډیریږي ، او دا د کوربه په عملیات اغیزه کوي. په کوربه کې ټول او نور کانټینرونه، بیا ځینې وختونه دا د کوربه "زوال" لامل کیږي. 

دریم اړخ دا دی چې دا اړینه ده چې د بکس څخه د امکان تر حده د ډیری میټریک راټولولو میتودونو ملاتړ وکړئ. د فایلونو لوستلو او د پرومیټیوس پای نقطې رایې ورکولو څخه د غوښتنلیک ځانګړي پروتوکولونو کارولو پورې.

او وروستی اړخ د سرچینو مصرف کمول دي.

موږ د Telegraph په نوم د خلاصې سرچینې Go حل غوره کړ. دا یو نړیوال نښلونکی دی چې له 140 څخه ډیر ډوله ان پټ چینلونو (ان پټ پلګ ان) او 30 ډوله محصول چینلونو (آؤټ پوټ پلگ ان) ملاتړ کوي. موږ دا نهایی کړی او اوس به تاسو ته ووایو چې موږ دا څنګه د مثال په توګه د کوبرنیټس په کارولو سره کاروو. 

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

راځئ چې ووایو یو پراختیا کونکی د کار بار ځای په ځای کوي او کوبرنیټس د پوډ رامینځته کولو غوښتنه ترلاسه کوي. پدې مرحله کې، د کلکټر په نوم یو کانټینر په اوتومات ډول د هر پوډ لپاره رامینځته کیږي (موږ د تغیر ویب هک کاروو). راټولونکی زموږ استازی دی. په پیل کې، دا کانټینر ځان د پرومیتیوس او د لوګو راټولولو سیسټم سره کار کولو لپاره تنظیموي.

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

موږ د Docker API له لارې لاګونه راټولوو: پراختیا کونکي یوازې اړتیا لري چې دوی په stdout یا stderr کې واچوي، او کلکټر به یې ترتیب کړي. لاګونه د یو څه ځنډ سره په ټوټو کې راټول شوي ترڅو د احتمالي کوربه ډیر بار مخه ونیسي. 

میټریکونه په کانټینرونو کې د کاري بار مثالونو (پروسو) کې راټول شوي. هرڅه په نښه شوي دي: د نوم ځای، لاندې، او داسې نور، او بیا د پرومیټیوس بڼه ته بدل شوي - او د راټولولو لپاره شتون لري (پرته له لاګونو). موږ کافکا ته لاګونه، میټریکونه او پیښې هم لیږو او نور:

  • لاګونه په ګریلوګ کې شتون لري (د لید تحلیل لپاره)؛
  • لاګونه، میټریکونه، پیښې د اوږدې مودې ذخیره کولو لپاره کلک هاؤس ته لیږل کیږي.

هرڅه په AWS کې ورته ورته کار کوي ، یوازې موږ د کافکا سره ګریلوګ د کلاوډ واچ سره بدلوو. موږ لاګونه هلته لیږو، او هرڅه خورا اسانه کیږي: دا سمدلاسه روښانه ده چې کوم کلستر او کانټینر دوی پورې اړه لري. ورته د ګوګل Stackdriver لپاره ریښتیا ده. دا، زموږ سکیم دواړه د کافکا سره او په بادل کې کار کوي. 

که موږ د پوډونو سره کوبرنیټس ونه لرو ، سکیم یو څه ډیر پیچلی دی ، مګر دا په ورته اصولو کار کوي.

د k8s لپاره د تولید لپاره چمتو شوي عکسونه

ورته پروسې د کانټینر دننه اجرا کیږي، دوی د S6 په کارولو سره تنظیم شوي. ټول ورته پروسې په ورته کانټینر کې روان دي.

په پایله کې،

موږ د عکسونو جوړولو او پیل کولو لپاره بشپړ حل رامینځته کړی ، د لاګونو او میټریکونو راټولولو او تحویلولو اختیارونو سره:

  • موږ د عکسونو راټولولو لپاره معیاري چلند رامینځته کړ، او د هغې پر بنسټ موږ د CI ټیمپلیټونه جوړ کړل؛
  • د معلوماتو راټولولو اجنټان زموږ د ټیلګراف توسیعونه دي. موږ دوی په تولید کې ښه ازموینه وکړه؛
  • موږ په پوډونو کې د اجنټانو سره کانټینر پلي کولو لپاره د بدلون ویب هک کاروو؛ 
  • په Kubernetes/Rancher ایکوسیستم کې مدغم شوی؛
  • موږ کولی شو ورته کانټینرونه په مختلف آرکیسټریشن سیسټمونو کې اجرا کړو او هغه پایله ترلاسه کړو چې موږ یې تمه لرو؛
  • د بشپړ متحرک کانټینر مدیریت ترتیب رامینځته کړی. 

همکار لیکوال: Ilya Prudnikov

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

Add a comment