کوبرنتیز یا K8s (که عدد ۸ بیانگر تعداد حروف بین K و s است) یک پلتفرم متن باز است که توسط گوگل توسعه یافته است و اجرا و مدیریت اتوماتیک کانتینر هارا بر عهده میگیرید و به شما در مدیریت اجرای برنامه کانتینری در محیطهای مختلف مانند سرورها؛ سرویس های ابری و ... کمک میکند. برای ادامه بحث و فهمیدن هرچه بهتر کوبرنتیز باید ابتدا با مفهوم کانتینر آشنا شویم. (میتوانید در صورتی که با این مفهوم آشنایی دارید از این قسمت عبور کنید.)
استقرار برنامه در طول زمان دچار دگرونی هایی شده است. استقرار برنامه به طور سنتی به این شکل بود که برنامه روی سخت افزار یک سیستم عامل نصب میشود و چندین برنامه روی این سیستم عامل اجرا میشوند. همانطور که قابل حدس است این شیوه از استقرار نرم افزار ممکن است باعث تداخل در منابع تخصیص یافته شود. برای مثال در نظر بکیرید که یک برنامه بیشتر منابع را در اختیار بگیرید و باعث شود برنامههای دیگر عملکرد مناسب خود را نداشته باشند.
مشکل دیگر این روش کار نکردن درست برنامه در ماشینهای متفاوت است. فرض کنید یک برنامه نویس یک برنامه را توسعه داده و در ماشین خودش تمام تستها را پاس کرده اما وقتی این برنامه را به تیم عملیات میدهد این برنامه به درستی کار نمیکند و این درست کار نکردن به علت خیلی مشکلات از قبیل تفاوت در لایبریها و ورژن های آنها و ... میتواند باشد. ( برای خواندن میم های جذاب در این باره عبارت but it works on my machine meme را جستجو کنید :) )
شیوه دیگر استقرار برنامه مجازیسازی است (Virtualized) در این روش بر روی یک سیستم عامل ماشینهای مجازی ساخته میشوند که این ماشین های مجازی سیستم عامل خود را دارند و این باعث ایزوله شدن برنامههای ماشینهای مجازی مختلف میشود و باعث میشود بهبود مقیاس پذیری و توانایی نگهداری از برنامه میشود.
شیوه نوین استقرار برنامه شیوه استقرار توسط کانتینر ها است. ایده کانتینر از شرکت های کشتی رانی گرفته شده است چون در شرکتهای کشتی رانی محموله حمل شده مهم نیست آنها صرفا تعدادی جعبه فلزی به اسم کانتینر را جابهجا و نگه داری میکنند و با محتوای داخلی آن ها کاری ندارند.
کانتینرها مانند ماشینهای مجازی اما سبکتر از ماشینهای مجازی هستند و با این تفاوت که میتوانند به طور مستقل از هم بر روی یک سیستم عامل اجرا شوند و این ویژگی باعث میشود که ایجاد و استقرار برنامه به روش کانتینر مزیتهای بسیاری مانند سریع بودن، ایجاد روش امن برای عقبگرد، عملکرد تقریبا یکسان در همه پلتفرم ها و ... را داراست.در ادامه متن هر کجا از داکر که یکی از محبوب ترین روش کانتینر کردن اپلیکیشن هاست استفاده کردیم منظور روش استقرار به وسیله کانتینرها است.
قبل از اینکه در مورد کوبرنتیز صحبت کنیم ابتدا ببینیم که یک ابزار ارکستریشن (مانند کوبرنتیز) چیست؟
به وجود آمدن مفهوم ماکروسرویس ها باعث پرطرفدار شدن کانتینرها شد زیرا بسترهای سبکی هستند که میتوانند این برنامه های سبک و مستقل را در خود اجرا کنند. و مدیریت این کانتینرها که در محیطهای مختلف با استفاده از اسکریپتها و برنامههای تحت نظر انسان قابل انجام نیست یا بسیار سخت است. برای مثال زمانی که در مرحله Production هستیم اطمینان از بالا بودن برنامه برای ما بسیار مهم است و در این نقطه است که کوبرنتیز به کمک ما آمده و مدیریت کانتینرها را بر عهده میگیرید.
کوبرنتیز سرویس های زیر را ارائه میده:
۱. دردسترس بودن و نگه داری از سرویس ها: یکی از تضمین هایی که کوبرنتیز به ما میدهد نبود زمانی است که سرویس ها پایین باشند. برای مثال اگر یک کانتینر دچار مشکل شود کوبرنتیز سعی میکند آن را بازیابی کند و یا یک کانتینر دیگر با آن جایگزین کند.
۲. مقیاس پذیری: کوبرنتیز اجازه افزایش ظرفیت برنامه شما را به صورت سریع میدهد.
۳. پخش بار: کوبرنتیز میتوانند درخواست ها را بین کانتینر های مختلف تقسیم کند به طوری که سیستم پایدار باشد.
۴. منتشر کردن و عقبگرد اتوماتیک: فرض کنید که میخواهید ورژن جدید برنامه خود را منتشر کنید و میخواهید کارایی آن را تست کنید. برای اینکار ۱۰ درصد از کاربران خود را انتخاب کرده و درخواست این افراد را به ورژن جدید انتقال میدهید و تست های خود را انجام میدهید اگر موفقیت آمیز بود ورژن جدید را منتشر کرده و همه کاربران را به ورژن جدید میبرید و در صورت خرابی به ورژن قبلی عقب گرد میکنید. این کار که در اینجا توصیف شد را میتوان به صورت خودکار توسط کوبرنتیز انجام داد.
۵. تخصیص بهنیه سخت افزار: کوبرنتیز این قابلیت را به شما میدهد تا منابع مورد نیاز برای هر کانتینر را مشخص کنید سپس خود کوبرنتیز با توجه به میزان سخت افزار شما کانتینرها را به صورتی انتخاب میکند که بهترین استفاده را از سخت افزار شما داشته باشد.
۶. بازیابی: یکی دیگر از امکاناتی که کوبرنتیز در اختیار شما قرار میدهد امکان بازیابی اطلاعات و حالت برنامه هنگام وقوع یک خطا است.
اما باید در نظر داشته باشیم که کوبرنتیز یک محیط با سخت افزار نیست و روی سخت افزار شما بالا میآید و کارهایی مانند Build و تست سورس کد های یا فرآیند های CI/CD را انجام نمیدهد. همچنین کوبرنتیز خدمات لایه اپلیکیشن را ارائه نمیدهد و تنها image ها و کانتینر های شما را مدیریت میکند.
کوبرنتیز مدیریت و اتوماسیون استقرار یک سیستم مبتنی بر کانتینر را بر عهده دارد. در قسمت بعد درباره چگونگی انجام این کار توسط کوبرنتیز و قسمت های مختلف آن توضیح میدهیم.