سرفصل‌های آموزشی
آموزش کوبرنتیز (kubernetes)
کوبرنتیز چیست و چرا باید از کوبرنتیز استفاده کنیم؟

کوبرنتیز چیست و چرا باید از کوبرنتیز استفاده کنیم؟

کوبرنتیز ابزاری است که در فرآیند استقرار برنامه های containerized شده، گسترش پذیری و بازیابی کانتینر ها را مدیریت می کند.

تصور کنید برنامه ای داریم که از سه کانتینر تشکیل شده است و این سه کانتینر داخل یک سرور یا ماشین مجازی قرار دارند. 

کانتینر های ما در این سرور فعال اند و همه چیز به خوبی کار می کند. اما اگر در آینده یکی از کانتینر ها غیر فعال شود چه اتفاقی می افتد؟ تصور کنید کانتینر شماره 2 غیرفعال شده است و ما برای اجرای برنامه مان به هر سه کانتینر نیاز داریم. در چنین شرایطی اگر از ابزار های orchestration مانند کوبرنتیز استفاده نکنیم باید به صورت دستی کانتینر ها را چک کنیم تا متوجه غیر فعال شدن آن ها شویم و کانتینر غیر فعال را دوباره راه اندازی کنیم.

ایراد این فرآیند این است که از زمان غیر فعال شدن کانتینر تا راه اندازی مجدد آن، برنامه ما دچار مشکل خواهد بود. شاید با خود فکر کنید چون تعداد کانیتنر ها کم است می توان به صورت مرتب وضعیت فعال بودن آن ها را بررسی کرد. اما اگر یکی از کانتینر ها 3 صبح غیر فعال شد چه اتفاقی می افتد؟ تا زمانی که بیدار شوید، برنامه برای زمان طولانی ای دچار مشکل خواهد بود.

مثال ما یک برنامه بسیار ساده را نشان می دهد. بیشتر برنامه ها مانند تصویر زیر هستند:

بیشتر برنامه ها شامل تعداد زیادی کانتینر اند که در سرور های مختلف راه اندازی شده است.

در دنیای واقعی بررسی وضعیت هر کانتینر در سرور های مختلف و بازیابی آن ها در صورت غیر فعال شدن، تقریبا غیر ممکن است. تعداد کانتینر ها در شرکتی مانند گوگل به میلیارد می رسد و حتی شرکت های کوچکتر ممکن است هزاران یا میلیون ها کانتینر داشته باشند. بررسی دستی این تعداد کانتینر کار غیر ممکنی است. چگونه این چالش را حل کنیم؟ کوبرنتیز اینجا به کمک ما می آید.

کوبرنتیز چه کاری انجام می دهد؟

کوبرنتیز سلامت هر کانتینر را بررسی می کند و اگر کانتینری غیر فعال شده باشد آن را بازیابی کرده یا با کانتینر جدیدی جایگزین می کند. بنابراین کوبرنتیز مطمئن می شود که کانتینر های ما همیشه فعال اند. البته کوبرنتیز کار های دیگری هم انجام می دهد که در ادامه خواهیم دید.

تصور کنید در همان برنامه ای که با سه کانتینر داشتیم ترافیک ورودی یکی از کانتینر ها زیاد شود. از آن جایی که ترافیک یکی از کانتینر ها زیاد شده است ممکن است آن کانتینر در برنامه ما bottleneck  شود. در چنین شرایطی باید متوجه شویم کدام کانتینر ترافیک زیادی دارد تا نمونه های بیشتری از آن را در سرور پیکربندی کنیم. همچنین باید یک load balancer داشته باشیم تا ترافیک ورودی این کانتینر ها را متعادل کند. این کار کمی پیچیده است و نباید به شکل دستی انجام شود. کوبرنتیز می تواند این کار را برای ما انجام دهد.

کوبرنتیز ترافیک ورودی هر کانتینر را بررسی می کند و در صورتی که ترافیک زیاد شود به صورت خودکار نمونه هایی از آن کانتینر را در سرور راه اندازی می کند و با کمک load balancer ترافیک ورودی را بین کانتینر ها تقسیم می کند. به عبارت دیگر کوبرنتیز برنامه ما را به صورت افقی گسترش می دهد. در حالی که کوبرنتیز این کار را انجام می دهد ممکن است ما خواب باشیم و حتی متوجه نشویم که این کار انجام شده است. 

برخی از کاربرد های کوبرنتیز

کوبرنتیز کاربرد های زیاد دیگری دارد که به مهم ترین آن ها اشاره می کنیم:

  • برگرداندن تغییرات به آسانی انجام می شود: تصور کنید برنامه مان را بروزرسانی می کنیم و متوجه خطا هایی می شویم. با کوبرنتیز می توانیم به راحتی به نسخه های قبلی برنامه مان برگردیم.
  • به هیچ سرویس دهنده ابری ای محدود نمی شویم: برای مثال اگر برنامه ما در amazon استقرار داشته باشد می توانیم به راحتی آن را به google منتقل کنیم. چون کوبرنتیز به هیچ سرویس دهنده ابری ای محدود نیست، کافی است فایل های yml مربوط به پیکربندی کوبرنتیز را به سرویس دهنده دلخواه خود بدهیم تا برنامه ما به سرعت راه اندازی شود. همچنین در کوبرنتیز بین محیط های مختلف مانند local و سرویس دهنده های ابری تفاوتی وجود ندارد و به همین دلیل تست کردن برنامه با خیال راحت تری انجام می شود. 
  • استقرار محصول با سرعت بیشتری انجام می شود.
  • به ما اجازه می دهد برنامه های پیچیده تری داشته باشیم : هرچه برنامه ما رشد می کند تعداد کانتینر های آن هم بیشتر می شود. مدیریت آن ها تنها با ابزاری مثل کوبرنتیز ممکن است. به طور معمول میکروسرویس ها با کمک کوبرنتیز در سرور مستقر می شوند.

موارد بالا تنها بخشی از کاربرد های کوبرنتیز هستند. موارد دیگری هم هستند که ممکن است در ادامه دوره با ان آشنا شویم.