Kubernetes چیست؟

Kubernetes چیست؟

Kubernetes یک پلتفرم متن باز گسترش پذیر و قابل حمل است که برای مدیریت اپلیکیشن های کانتینر سازی شده مورد استفاده قرار می گیرد..


کوبرنتیز تنظیمات و اتوماسیون را برای شما ساده سازی می کند. همچنین این پلتفرم دارای یک اکو سیستم وسیع و سریعا در حال گسترش است که خدمات و پشتیبانی و ابزارهایی در دسترس را برای شما ارائه می کند.
واژه ی کوبرنتیز از زبان یونانی و به معنای خلبان یا سکان دار است. همچنین این پلتفرم را با نام K8 نیز می شناسند. شرکت گوگل کوبرنتیز را به عنوان پلتفرم متن باز در سال ۲۰۱۴ معرفی کرد.

 

نگاهی به کوبرنتیز در گذشته


با هم نگاهی می اندازیم به مزایای استفاده از کوبرنتیز در گذر زمان:

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

 

دوره توسعه سنتی:

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

دوره توسعه مجازی سازی:

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

دوره توسعه کانتینرها:

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


کانتینرها به دلایل زیر طرفداران زیادی پیدا کردند:

•    ساخت و توسعه سریع و راحت اپلیکیشن ها. ساخت ایمیج از کانتینرها ساده تر و کارامد تر از استفاده از ایمیج های ماشین های مجازی است.
•    توسعه دائمی، یکپارچگی و به کار گیری. به دلیل امکان ساخت ایمیج های دائمی و به کار گیری سریع آنها و همچنین قابلیت و کارایی بالای rollback.
•    دغدغه های کاملا تفکیک شده در Dev and Ops.
•    قابلیت مشاهده، نه تنها فقط برای اطلاعات سطحی از سیستم عامل و متریک ها، بلکه سلامت اپلیکیشن و دیگر سیگنال ها.
•    پیوستگی محیطی در طول توسعه، آزمایش و تولید: اجرا بر روی لپ تاپ و یا ابر کاملا یکسان خواهد بود.
•    قابلیت حمل روی ابر یا توزیع های سیستم عاملی: قابل اجرا روی RHEL، CoreOS و هر جای دیگر..
•    مدیریت اپلیکیشن محور: ارتقا سطح جداسازی از اجرای سیستم عامل روی سخت افزار مجازی به اجرای اپلیکیشن روی سیستم عاملی که از منابع منطقی استفاده می کند.
•    اپلیکیشن ها به قطعات کوچکتر و مستقلی شکسته شده اند و می توانند به صورت پویا اجرا و مدیریت شوند.
•    جداسازی منابع با استفاده از پیش بینی برای کارایی هر اپلیکیشن
•    به کار گیری منابع با کارایی و فشردگی بالا

چرا به Kubernetes نیاز داریم؟

کانتینر ها روش خوبی برای دسته بندی کردن و اجرای اپلیکیشن های شما هستند. در استفاده تجاری، شما باید به نحوی کانتینرها را مدیریت کنید که اپلیکیشن ها را اجرا کنند و از نبود هرگونه downtime اطمینان حاصل کنید. به عنوان مثال در صورتی که کانتینری از کار افتاد می بایست کانتینر دیگری شروع به کار کند. مشخصا در صورتی که این پروسه توسط یک سیستم انجام شود کار به مراتب راحت تری خواهد بود.
دقیقا همینجاست که Kubernetes به کمک ما می آید. کوبرنتیز به شما چهارچوبی ارائه می کند تا بتوانید سیستم های توزیع شده را روی آن با انعطاف پذیری اجرا کنید. مقیاس پذیری و رفع خطا برای اپلیکیشن های شما در کنار ارائه الگوهای توسعه از دیگر قابلیتهایی است که کوبرنتیز به شما ارائه می کند.

 

کوبرنیتز قابلیتهای زیر را به شما ارائه می کند:

جست و جوی سرویس و Load balancing

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

Storage Orchestration:

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


Rollout و Rollback های خودکار:

شما میتوانید برای کوبرنتیز وضعیت مورد نظرتان را برای کانتینرهای به کار گرفته شده مشخص کنید و با این کار کوبرنتیز می تواند وضعیت حال را به وضعیت مورد نظر شما در صورت امکان کنترل تغییر دهد.

بسته بندی اتوماتیک

شما به کوبرنتیز دسته ای از گره ها را ارائه کرده اید که می تواند از آنها برای اجرای وظایف کانتینری شده استفاده کند. شما به کوبرنتیز می گویید که چه میزان CPU و RAM را برای هر کانتینر ست کند. کوبرنتیز کانتینرها را روی گره های شما به نحوی جای گذاری می کند که بهترین استفاده از منابع سیستم انجام شود.

رفع مشکلات به صورت خودکار:

کوبرنتیز کانتینرهای fail شده را مجدد راه اندازی یا ری استارت می کند. آنها را جایگزین و همچنین کانتینرهایی که پاسخی به آزمایش سلامت تعیین شده توسط کاربر نمی دهند را می تواند قطع کند. در ضمن آنها را به مشترکین نشان نمی دهد تا زمانی که وضعیتشان به حالت نرمال برگردد.

رمز و مدیریت تنظیمات:

کوبرنتیز به شما امکان ذخیره و مدیریت اطلاعات حساس را می دهد، مانند پسوردها، توکنهای OAuth و کلید های SSH. شما می توانید رمزهای خودتان را استفاده و آپدیت کنید و همچنین تنظیمات اپلیکیشن ها را بدون نیاز به ساخت مجدد ایمیج از کانتینر ها و همچنین بدون نمایش رمزهایتان به کار بگیرید.

امیدواریم این مطلب مورد توجه شما واقع شده باشد.