کوبرنیتیس چیست؟

کوبرنیتیز (Kubernetes) چیست؟زمان مطالعه این مطلب ۷ دقیقه

کوبرنیتیز ابزار مدیریت و ارکستریشن کانتینرها است که بسیاری از کارهای مربوط به استقرار، مدیریت و مقیاس کردن (Scale) اپلیکیشن‌های کانتینریزه شده را با اتوماسیون انجام می‌دهد.

کوبرنیتیز در ابتدا یکی از پروژها‌ی گوگل بوده و گوگل کارهای مرتبط با محصولاتش را با استفاده از آن انجام می‌داده است. گوگل در سال ۲۰۱۴ این پروژه را متن‌باز کرده است و در این سال‌ها جامعه‌ی آن به سرعت رشد کرده است.

ابتدا ببینیم ارکستریشن (Orchestration) در دواپس به چه معناست:

ارکستریشن شامل انجام اتوماتیک پیکربندی، مدیریت، هم‌کاری سیستم‌های کامپیوتر، اپلیکیشن‌ها و سرویس‌ها است. ارکستریشن به تیم‌های IT کمک می‌کند راحت‌تر وظایف پیچیده و کارهایشان را انجام دهند.

کوبرنیتیز برای معماری مدرن بر پایه کانتینر

اگر بخواهیم معماری اپلیکیشن‌ها را از لحاظ نحوه استقرار در طی زمان بررسی کنیم، سه مدل استقرار محصول را از هم تفکیک خواهیم کرد.

–          دوران سنتی استقرار محصول روی سرور فیزیکی

–          دوران استقرار روی ماشین‌های مجازی

–          دوران استقرار به وسیله کانتینر

کانتینرها با فراهم‌ساختن محیطی ایزوله، جابه‌جایی و استقرار اپلیکیشن‌ها را آسان‌تر می‌سازند. برای آشنایی با داکر که ابزار پرکاربرد ساخت کانتینرها است این مطلب را مطالعه کنید.

کوبرنیتیز در توسعه اپلیکیشن‌ها بر بستر ابر، پلتفرمی را در اختیار شما قرار می‌دهد که با آن می‌توانید کانتینرها را روی کلاستری از سرورهای فیزیکی یا مجازی اجرا کنید.

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

کوبرنیتیز محیطی را برای شما فراهم می‌کند که سیستم‌های توزیع شده را با انعطاف بیشتری به اجرا درآورد. کوبرنیتیز همچنین کار بزرگ یا کوچک کردن اپلیکیشن‌های کانتینریزه شده و انجام Failover با استفاده از ویژگی Redundancy در زمانی که یکی از کانتینرها از دسترس خارج شد، نقش دارد و الگوهای استقرار را برای اپلیکیشن‌ها فراهم می‌کند.

این نکته را در نظر داشته باشید که کوبرنیتیز سورس کد شما را نمی‌سازد یا آن را استقرار نمی‌دهد.

کوبرنیتیز چه خدماتی به شما می‌دهد؟

کشف سرویس (Service Discovery) و توزیع بار (Load Balancing): کوبرنیتیز می‌تواند کانتینری را به وسیله نام DNS یا آدرسIP  نمایش دهد. اگر ترافیک یکی از کانتینرها بالا باشد، کوبرنیتیز می‌تواند، نقش لودبلنسر را ایفا کند و ترافیک شبکه را توزیع کند تا زیرساخت باثبات باقی بماند.

ارکستریشن ذخیره سازی (Storage Orchestration): کوبرنیتیز به شما اجازه می‌دهد که به صورت اتوماتیک وسیله ذخیره‌سازی را به انتخاب شما، سوار (Mount) کند.

راه‌اندازی و بازگرداندن اتوماتیک: شما می‌تواند با کوبرنیتیز عملیات ساخت، حذف و اختصاص منابع به کانتینر جدید را به صورت اتوماتیک به کوبرنیتیز بسپارید.

بین پکینگ* اتوماتیک: کوبرنیتیز از کلاستر نودهایی که شما در اختیارش قرار می‌دهد استفاده می‌کند. شما برای کوبرنیتیز مشخص می‌کنید که هر کانتینر به چه مقدار RAM و CPU نیاز دارد. کوبرنیتیز کانتیرها رو به اندازه منابعی که شما به آن اختصاص دادید، اندازه می‌کند تا از این منابع بهترین استفاده را کند.

*Bin packing مسئله‌ای که است که در آن باید تعدادی شکل یا حجم را به بهترین شکل در شکل یا حجمی بزرگ‌تر جا داد.

بهبود خودکار (Self-Healing): کوبرنیتیز کانتینرهایی که Fail می‌شوند را ری‌استارت می‌کند، آنها را جایگزین می‌کند، آنهایی که به تست سلامت کوبرنیتیز پاسخ نمی‌دهند، حذف می‌کند و آنها را در اختیار کاربران قرار نمی‌دهد، تا آماده برای پاسخ‌دهی شوند.

مدیریت پیکربندی و اطلاعات محرمانه: کوبرنیتیز به شما اجازه می‌دهد که اطلاعات محرمانه مانند پسوردها، توکن‌های احراز هویت و کلید‌های SSH را ذخیره و مدیریت کنید. شما می‌توانید این موارد محرمانه را استقرار دهید و به روزرسانی کنید، بدون نیاز به اینکه ایمیج‌های کانتینر خود را دوباره بسازید و یا آنها را آشکار سازید.

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

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

۱)سطح کنترل (Control Plane) :

مجموعه‌ای از فرآیند‌هایی (Process) است که نودهای کوبرنیتیز را کنترل می‌کنند. این جایی است که همه وظایف محوله آغاز می‌شود. وظیفه Control Plane حفظ وضعیت کلاستر است. مانند اینکه چه اپلیکیشن‌هایی در حال اجرا هستند و از چه ایمیج‌های کانتینری استفاده می‌کنند.

۲)نودها و ماشین‌های رایانشی:

نودها وظایفی را که از سوی سطح کیفیت (Control Plane) محول می‌شوند، انجام می‌دهند. نودها بر بستر ماشین‌های مجازی یا فیزیکی تشکیل شده‌اند. نودها خود از پادها (Pod) تشکیل شده‌اند. پادها گروهی از کانتینرها هستند که روی یک نود استقرار یافته‌اند. همه کانتینرها در یک پاد یک آدرس IP، IPC، نام هاست و منابع دیگر را به اشتراک می‌گذارند. پادها شبکه و محل ذخیره‌سازی را از کانتینرها جدا می‌کنند، تا جابه‌جایی آنها آسان‌تر شود.

کوبرنیتیز روی سیستم عامل اجرا می‌شود و با پادها در ارتباط است. کوبرنیتیز دستورات را از ادمین یا تیم دواپس می‌گیرد و آنها را به ماشین‌های رایانشی می‌سپارد. واگذاری کارها به این صورت با تعدادی از سرویس‌ها به صورت اتوماتیک کار می‌کند تا تصمیم بگیرد کدام نود برای انجام وظیفه‌ای مشخص بهتر است.

بنا به نیاز شما تعیین می‌کنید که چه اپلیکیشن‌هایی روی کلاستر کوبرنیتیز باید اجرا شوند، چه منابعی باید در اختیار آنها قرار بگیرد و … ارکستریشن کوبرنیتیز به شما کمک می‌کند که در سطح بالاتری با کانتینرها سروکار داشته باشید؛ به این ترتیب دیگر نیازی نیست که به طور جزئی هرکدام از کانتینرها و نودها را مدیریت کنید.

شما فقط کوبرنتیس را پیکربندی می‌کنید، نودها، پادها و کانتینرهای داخل آنها را تعریف می‌کنید و کوبرنیتیز کار ارکستریشن کانتینرها را برعهده می‌گیرد.

همچنین تصمیم‌گیری برای محل اجرای کوبرنیتیز بر عهده شماست. اینکه روی سرور فیزیکی باشد، یا ماشین مجازی و یا محیط ابر عمومی، خصوصی یا هیبریدی باشد. این یکی از مزیت‌های کوبرنیتیز است که روی زیرساخت‌های متعددی می‌تواند اجرا شود.

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

داکر به عنوان اجراکننده کانتینرهایی به کار می‌رود که کوبرنیتیز آنها را ارکستریت می‌کند. وقتی کوبرنیتیز زمان‌بندی برای اجرای وظیفه‌ای را به پاد‌ی درون نود اعلام می‌کند،‌ Kublet روی آن نود به داکر دستور می‌دهد که آن کانتینر مشخص را بالا آورد.Kublet  یکی از سرویس‌های کوبرنیتیز است که روی نودها اجرا می‌شود، مانیفست کانتینرها را می‌خواند و اطمینان حاصل می‌کند که کانتینرهای تعریف شده کار می‌کنند.

Kublet به صورت مداوم وضعیت کانتینرها را به وسیله داکر رصد می‌کند و این اطلاعات را در Control Plane تجمیع می‌کند. داکر کانتینرها را روی آن نود قرار می‌دهد و آنها را اجرا و متوقف می‌کند.

تفاوت اجرای این عملیات با وجود داکر در این است که با یک سیستم اتوماتیک این کارها را به جای اینکه به صورت دستی روی چندین نود و تمام کانتینرها انجام دهد، به صورت اتوماتیک انجام می‌دهد.

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

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

اپلیکیشن‌ها از چندین کانتینر تشکیل شده‌اند و این کانتینرها باید روی چندین سرور استقرار یابند. کوبرنیتیز کار ارکستریشن و مدیریت مورد نیاز برای استقرار کانتینرها را در اختیار شما قرار می‌دهد.

استفاده از زیرساخت ابری و به کارگیری معماری مدرن بر پایه کانتینر، تیم توسعه شما را چابک و کارآمدتر می‌کند.

پاسخ دادن:

ایمیل شما نمایش داده نمی‌شود.