help-header

Kubernetes چیست؟

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

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

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

 

شیوه کار Kubernetes

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

سایر ماشین‌ها در کلاستر به عنوان Node شناخته می‌شوند؛ سرورهایی که مسوول پذیرفتن بار کاری هستند و آن‌ها را با منابع محلی و خارجی اجرا می‌کنند. برای رعایت ایزوله‌سازی، انعطاف و مدیریت، Kubernetes برنامه و سرویس‌ها را در Container اجرا می‌کند. معمولن از داکر برای این کار استفاده می‌شود. هر Node، از Masterدستورهای ایجاد و حذف Container را دریافت و دستورات لازم شبکه را برای جابجایی ترافیک مربوط به آن تنظیم می‌کند.

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

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

کانتینر به‌شکل مستقیم به ماشین متصل نمی‌شود، بلکه یک یا چند کانتینتر که در کنار هم قرار دارند در داخل یک Pod کپسوله می‌شوند. در عمل، Pod یک یا چند کانتینر را شامل می‌شود که باید به‌عنوان یک برنامه کنترل شوند. Podها به‌عنوان یک واحد مستقل مدیریت می‌شوند و محیط و فضای IPشان را با یکدیگر به اشتراک می‌گذارند. معمولن Pod شامل یک کانتینر اصلی و تعدادی کانتینر کمکی است. برای مثال، یک Pod ممکن است شامل یک کانتینر باشد که برنامه اصلی را اجرا می‌کند و یک کانتینر کمکی که فایل‌ها را در یک فایل سیستم اشتراکی ذخیره می‌کند. 

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

یکی از مواردی که کاربر به‌شکل مستقیم می‌تواند با کوبرنتیز برای اجرای برنامه ایجاد و مدیریت کند Deployment نام دارد که از Pod و Replication Controller استفاده کرده ولی سختی کار با آن‌ها را از کاربر پنهان می کند. 

 

چرا باید از Kubernetes استفاده کرد؟

برای پاسخ‌دهی به نیازهای در حال تغییر کسب‌وکار، تیم برنامه‌نویس باید بتواند به سرعت برنامه‌ها و سرویس‌های جدید را ایجاد و منتشر کند. پیاده‌سازی مبتنی‌بر ابر باعث افزایش سرعت و سهولت در پیاده‌سازی، بهینه‌سازی و اصلاح برنامه‌ها می‌شود. از طرفی اپلیکیشن‌های تولیدی بزرگ، چندین کانتینر ایجاد می‌کنند که باید روی چندین سرور نیز اجرا شوند. کوبرنتیز قابلیت مدیریت و سامان‌دهی لازم برای پیاده‌سازی کانتینرها در مقیاس بالا را برای ما فراهم می‌کند. هم‌چنین با استفاده از کوبرنتیز می‌توان از سرویس‌های اضافه مانند Load Balance و Health Check به‌راحتی بهره مند شد. هم‌چنین با استفاده از محصول سکوی ابری آروان، می‌توان از تمام مزایای کوبرنتیز بهره‌مند شد و تمامی سرویس‌های این ابزار را به‌سادگی در اختیار داشت.