کوبرنتیز (Kubernetes) چیست
کوبرنتیز یک پلتفرم توسعهپذیر و متنباز برای سرویسها و ورکلودهای Containrized شده، است. کوبرنتیز یک اکوسیستم سریع، بزرگ و در حال رشد دارد و خدمات، پشتیبانی و ابزارهای کوبرنتیز بهطور گسترده در حال توسعه هستند.
برای اینکه دریابیم که چرا کوبرنتیز مفید است شاید بهتر باشد تا مروری بر استقرار در گذشته تاکنون داشته باشیم:
دوران استقرار (deployment) به روش سنتی: اوایل سازمانها برنامههایشان را بر روی سرورهای فیزیکی اجرا میکردند. هیچ راهی برای تعریف مرز استفاده از منابع برای اپلیکیشنهای روی یک سرور فیزیکی وجود نداشت و این مورد موجب مشکلاتی مانند تخصیص منابع شد. برای مثال اگر چندین برنامه بر روی یک سرور فیزیکی یکسان اجرا شوند، ممکن است مواردی وجود داشته باشد که یک برنامه بیشتر منابع را اشغال کند و در نتیجه سایر برنامهها عملکرد ضعیفی داشته باشند. یک راه حل برای این مورد اجرای هر برنامه بر روی یک سرور فیزیکی مجزا است. اما این راه حل به دلیل استفاده ناکافی از منابع و همچنین مواردی مانند مقیاسپذیری و هزینهی نگهداری سرورها، برای سازمانها گران تمام میشود.
دوران استقرار مجازیسازی شده (Virtualized): مجازیسازی بهعنوان یک راهحل برای مشکل قبلی معرفی شد. این راه حل این امکان را فراهم میکند تا چندین ماشین مجازی (Virtual Machine) را بر روی پردازندهی یک سرور فیزیکی اجرا کنید. مجازیسازی سطحی از امنیت را فراهم میکند و به برنامهها اجازه میدهد تا بهصورت کاملا ایزوله بر روی ماشینهای مجازی اجرا شوند. با استفاده از مجازیسازی اطلاعات یک اپلیکیشن بهصورت آزادانه قابل دسترسی از طریق سایر اپلیکیشنها نخواهد بود. مجازیسازی امکان استفاده بهتر از منابع بر روی یک سرور فیزیکی و همچین امکان مقیاسپذیری را فراهم میکند. زیرا یک اپلیکیشن با استفاده از مجازیسازی میتواند بهراحتی بهروزرسانی شود و همچنین هزینههای سختافزاری کاهش مییابد.
دوران استقرار کانتینر (Container): کانتینرها شبیه به ماشین مجازی هستند، اما ویژگیهای ایزولگیای برای بهاشتراک گذاری سیستمعاملها در بین اپلیکیشنها دارند. همانند یک ماشین مجازی، کانتینرها دارای فایل سیستم، سهم CPU، حافظه و فضای پردازش خود هستند. از آنجایی که کانتینرها از زیرساختهای زیرین جدا شدهاند، در بین فضاهای ابری و توزیعهای مختلف سیستمعامل، قابل حمل (portable) هستند.
اکنون کانتینرها محبوب شدهاند چراکه مزایای اضافهی دیگری را نیز ارائه میکنند:
- ایجاد و استقرار چابک اپلیکیشنها
- توسعه مداوم، یکپارچگی و استقرار
- جداسازی نگرانیهای توسعه (Dev) و عملیات (Ops)
- قابلیت Observability
- سازگاری محیطی در زمان توسعه، تست و اجرا
- مدیریت اپلیکیشنمحور
- جداسازی منابع
- استفاده بهینه از منابع