کوبرنتیز چیست؟
Kubernetes یا بهاختصار K8s یکی از محبوبترین پلتفرمهای متنباز در میان برنامهنویسان است. این پلتفرم به ساماندهی، مدیریت و خودکارسازی نرمافزارهای کانتینری کمک میکند. به این فرآیند در علم کامپیوتر ارکستراسیون میگوییم.
اگر نمیدانید کانتینر چیست پیش از خواندن ادامه آموزش کوبرنتیز به بخش کانتینر مراجعه کنید تا این مبحث را بهتر متوجه شوید.
در مجموع Kubernetes را برای سادهسازی فرآیندهای نرمافزاری به کار میبریم. این ابزار دارای دستورهای داخلی است که میتواند از پیادهسازی نرمافزار گرفته تا نظارت و ایجاد تغییر در آن را بهصورت خودکار انجام دهد.
کاربران میتوانند از این ابزار بدون داکر (Docker) نیز استفاده کنند. بهصورت خلاصه، بهجای اینکه هر کانتینر فرآیند جداگانهای را برای استقرار طی کند، K8s کانتینرهای مشابه را در یک گروه قرار میدهد تا شبکه سبک شود و کارایی منابع بهبود یابد.
برای اینکه بدانید کاربرد کوبرنتیز چیست، بهتر است ابتدا نگاهی به تاریخچه و نحوه پیدایش آن داشته باشیم.
تاریخچه کوبرنتیز
واژه Kubernetes برای اولین بار در زبان یونانی به کار برده شد. این واژه به معنای سکاندار یا خلبان است. در بیشتر منابع به دلیل طولانی بودن این کلمه اصطلاح K8s را برای آن به کار میبرند. عدد 8 در این کلمه نشاندهنده تعداد واژههای میان حرف K و s است.
برای اولین بار گوگل Kubernetes را توسعه داد تا بتواند در مقیاس هفتگی میلیاردها میلیارد کانتینر را اجرا کند. سپس در سال 2014 نسخه متنباز و آموزش کوبرنتیز را منتشر کرد تا تمام صنایع و سازمانها بتوانند مطابق نیازهایشان آن را به کار ببرند.
گوگل هدف اصلی طراحی K8s را به این صورت بیان میکند:
«سادهسازی مدیریت و اجرای سیستمهای پیچیده توزیع شده بدون نیاز به قطع ارتباط آنها با مزایایی که کانتیرها فراهم میآورند.»
مقایسه کوبرنتیز با داکر
مقایسه و انتخاب بین کوبرنتیز و داکر اغلب اشتباه میباشد، این دو، فناوریهای متفاوت و در عین حال مکمل برای اجرای اپلیکیشنهای کانتینری هستند.داکر به شما این امکان را میدهد هر آنچه که برای اجرای اپلیکیشن خود نیاز دارید را در جعبهای قرار دهید که میتواند در زمان و مکان مورد نیاز ذخیره و باز شود.هنگامی که شروع به دستهبندی اپلیکیشنهای خود کردید، به راهکاری برای مدیریت آنها هم نیاز دارید و این کاری است که کوبرنتیز انجام میدهد.
ارکستراسیون کانتینری چیست؟
ارکستراسیون کانتینر شامل مدیریت کانتینرها در محیط های بزرگ و پویا است. وظایفی مانند استقرار، اتصال، مقیاس بندی و اطمینان از در دسترس بودن بارهای کاری و خدمات کانتینری را خودکار می کند. در حالی که جابجایی دستی تعداد کمی از کانتینرها قابل مدیریت است، انجام همین کار در مقیاس در محیط های تولید چالش برانگیز می شود. پلتفرم های ارکستراسیون کانتینر، مانند Kubernetes، اتوماسیونی را برای ساده سازی این فرآیند فراهم می کنند. Kubernetes به استاندارد گسترده ای برای ارکستراسیون کانتینر در دنیای تجارت تبدیل شده است.
کوبرنتیز چه تواناییهایی دارد؟
Kubernetes وظیفه زمانبندی و اتوماسیون تسکها و رخدادهای مربوط به کانتینر را بر عهده دارد که در طول چرخه عمر نرمافزار ایجاد میشوند. این موارد عبارتند از:
- استقرار (Deployment): با کمک kubernetes میتوانید تعداد مشخصی کانتینر را روی یک هاست مشخص، مستقر کنید.
- عرضه (Rollouts): رول اوت تغییراتی است که در استقرار ایجاد میشود. با استفاده از kubernetes میتوانید یک رول اوت را ایجاد، متوقف، شروع و به عقب برگردانید.
- کشف سرویس (Service Discovery): کوبرنتیز میتواند به صورت خودکار یک کانتینر را در اینترنت یا برای سایر کانتینرها، با استفاده از DNS و IP آدرس به اشتراک بگذارد.
- تامین فضای ذخیرهسازی (Storage provisioning): با Kubernetes میتوانید کانتینر خود را به صورت دائمی روی فضای محلی یا ابری ذخیره کنید.
- توزیع متعادل بار (Load balancing): کوبرنتیز با توجه به ظرفیت سیستم، بار کاری را در شبکه پخش میکند تا سیستم بهینهترین عملکرد را داشته باشد.
- مقیاس خودکار (Autoscaling): با افزایش ترافیک و بار، kubernetes به صورت خودکار خوشههای جدیدی را برای توزیع مناسب بار ایجاد میکند.
- خود-ترمیمی برای دسترسی بهتر (Self-healing for high availability): با از کار افتادن یک کانتینر، کوبرنتیز به طور خودکار آن را جایگزین یا مجدد راهاندازی میکند تا دانتیم (Downtime) به حداقل برسد.