کوبرنتیز (Kubernetes) که به عنوان "K8" و "kube" هم شناخته می شود؛ یک پلتفرم سازماندهی Container متن باز است که بسیاری از فرآیندهای دستی مربوط به استقرار، مدیریت و مقیاس بندی برنامه های کانتینری را خودکار می کند. از آنجایی که برنامه ها رشد می کنند تا چندین کانتینر مستقر در چندین سرور را در برگیرند، کارکرد آن ها پیچیده تر می شود. برای مدیریت این پیچیدگی، کوبرنتیس یک API منبع باز ارائه می کند که مکان و نحوه اجرای این کانتینرها را کنترل می کند.

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

Kubernetes همچنین به طور خودکار کشف سرویس (Service discovery)، برقراری تعادل بار کاری، تخصیص منابع و مقیاس بندی های مبتنی بر استفاده محاسباتی را مدیریت می کند و سلامت هر منبع را بررسی می ‌کند و برنامه ‌ها را قادر می ‌سازد تا با راه ‌اندازی مجدد یا تکثیر خودکار کانتینرها، مشکلات شان را برطرف کنند.

دلایل استفاده از کوبرنتیس

راه اندازی برنامه های کانتینری می تواند پیچیده باشد زیرا اغلب دارای کانتینرهای زیادی که در ماشین های مختلف مستقر هستند، می باشد. Kubernetes راهی برای برنامه ریزی و استقرار این کانتینرها ارائه می کند، به علاوه به شما اجازه می دهد تا آن ها را به اندازه دلخواه خود مقیاس بندی کنید و چرخه عمرشان را مدیریت کنید.

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

قابل حمل کردن بار کاری

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

مقیاس بندی راحت کانتینرها

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

ساخت برنامه های توسعه پذیر

کوبرنتیز به دلیل منبع باز بودن، جامعه بزرگی از توسعه دهنگان دارد که به طور فعال افزونه هایی را ایجاد می کنند تا قابلیت هایی مانند امنیت، نظارت و مدیریت را به آن اضافه کنند.

ساختار کوبرنتیس

علت محبوبیت کوبرنتیز چیست؟

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

سازمان ها به 4 دلیل اصلی به کوبرنتیز نقل مکان می کنند:

Kubernetes به شما کمک می کند سریعتر حرکت کنید. در واقع Kubernetes به شما این امکان را می دهد یک پلتفرم سلف سرویس به عنوان یک سرویس PaaS ارائه دهید که یک لایه مجازی سخت افزاری برای تیم های توسعه ایجاد می کند. در این حالت تیم های توسعه می توانند به سرعت به منابع مورد نیازشان دسترسی داشته باشند. 

برای مثال، اگر به منابع بیشتری برای مدیریت بار اضافی نیاز داشته باشید، به سرعت می توانید آن ها را دریافت کنید زیرا همه این منابع از زیرساختی به دست می آیند که بین همه تیم ها به صورت مشترک در دسترس قرار داده شده اند.

Kubernetes مقرون به صرفه است. Kubernetes و کانتینرها امکان استفاده بهتر از منابع را نسبت به Hypervisor ها و ماشین های مجازی، فراهم می کند. از آنجایی که کانتینرها بسیار سبک هستند، برای اجرا به CPU و حافظه کمتری نیاز دارند.

کوبرنتیز یک Cloud-Agnostic است. کوبرنتیس بر روی خدمات وب آمازون (AWS)، مایکروسافت آزور (MS AZURE) و پلتفرم ابری گوگل (GCP) اجرا می شود و همچنین می توانید آن را در سرورهای داخلی خود اجرا کنید. می ‌توانید بدون نیاز به طراحی مجدد برنامه‌ ها یا بازنگری کامل زیرساخت ‌هایتان، حجم کاری را جا به‌ جا کنید.

در واقع، شرکت هایی مانند Kublr، Cloud Foundry، و Rancher ابزارهایی را برای کمک به استقرار و مدیریت خوشه Kubernetes در محل شرکت یا هر ارائه دهنده سرویس ابری دیگری که می خواهید، ارائه می دهند.

ارائه دهندگان سرویس ابری Kubernetes را برای شما مدیریت خواهند کرد. همانطور که قبلا ذکر شد، کوبرنتیز در حال حاضر استانداردی برای ابزارهای سازماندهی کانتینرها در داکر است. شرکت های ارائه دهنده سرویس ابری، Kubernetes-as-a-service (کوبرنتیس به عنوان سرویس) را به مشتریان خود ارائه می کنند، بنابراین می‌ توانید بر روی آنچه که برای شما مهم ‌تر است تمرکز کنید و مدیریت کوبرنتیز را به این شرکت ها بسپارید.

کوبرنتیز چگونه کار می کند؟

جزء مرکزی کوبرنتیس خوشه یا Cluster است. یک خوشه از بسیاری از ماشین های مجازی یا فیزیکی تشکیل شده است که هر کدام به عنوان یک Master یا به عنوان یک گره، یک عملکرد تخصصی را انجام می دهند. هر گره میزبان گروه‌ هایی از یک یا چند کانتینر (که شامل برنامه‌ های شما هستند) است و Master با گره‌ ها در مورد زمان ایجاد یا تخریب کانتینرها ارتباط برقرار می ‌کند. در همان زمان، به گره‌ ها می ‌گوید که چگونه ترافیک را بر اساس تراز کانتینر جدید تغییر مسیر دهند.

نمودار زیر یک طرح کلی از یک خوشه کوبرنتیس را نشان می دهد:

معماری کوبرنتیس

Master Kubernetes 

Master Kubernetes نقطه دسترسی (یا صفحه کنترل) است که از آنجا مدیران و سایر کاربران با خوشه ها ارتباط برقرار می کنند تا برنامه ریزی و استقرار کانتینرها را مدیریت کنند. یک خوشه همیشه حداقل یک Master دارد، اما بسته به الگوی تکرار خوشه ممکن است تعداد بیشتری داشته باشد.
Master وضعیت و داده های پیکربندی را برای کل خوشه در etcd ذخیره می کند که نوعی ذخیره اطلاعات کلید-مقدار پایدار و توزیع شده است.

هر گره به ectd دسترسی دارد و از طریق آن، گره ها یاد می گیرند که چگونه تنظیمات کانتینرهایی را که در حال اجرا هستند را حفظ کنند. می‌ توانید etcd را در Master Kubernetes یا در تنظیمات مستقل اجرا کنید.

Master ها از طریق kube-apiserver، نقطه دسترسی اصلی به صفحه کنترل، با بقیه خوشه ارتباط برقرار می کنند. به عنوان مثال، kube-apiserver اطمینان حاصل می کند که تنظیمات موجود در etcd با پیکربندی کانتینرهای مستقر در خوشه مطابقت دارند.

kube-controller-manager حلقه های کنترلی را کنترل می کند که وضعیت خوشه را از طریق سرور Kubernetes API مدیریت می کند. استقرارها، کپی‌ ها و گره‌ ها همگی دارای کنترل ‌هایی هستند که توسط این سرویس مدیریت می‌ شوند. به عنوان مثال، کنترل گر گره مسئول ثبت یک گره و نظارت بر سلامت آن در طول چرخه عمرش است.

بارهای کاری گره در خوشه توسط kube-scheduler ردیابی و مدیریت می شود. این سرویس ظرفیت و منابع گره ها را پیگیری می کند و بر اساس در دسترس بودن گره ها، کار را به آن ها اختصاص می دهد.

Cloud-Controller-manager سرویسی است که در کوبرنتیز اجرا می شود و به آن کمک می کند تا Cloud-Agnostic حفظ شود. Cloud-Controller- Manager به عنوان یک لایه مجازی بین APIها و ابزارهای ارائه دهنده سرویس ابری (به عنوان مثال، حجم های ذخیره سازی یا متعادل کننده بار) در کوبرنتیس عمل می کند.

استفاده از کوبرنتیز در تولید

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

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

کوبرنتیز برای اینکه کاملاً کاربردی شود به اجزای اضافی نیاز دارد. احراز هویت، شبکه، امنیت، نظارت، مدیریت گزارش‌ ها و ابزارهای دیگر را هم باید به آن اضافه کنید.

رابطه کوبرنتیز و داکر چیست؟

رابطه کوبرنتیس و داکر

Kubernetes و Docker با هم کار می کنند.

Docker یک استاندارد منبع باز برای بسته بندی و توزیع اپلیکیشن های کانتینری ارائه می دهد. با استفاده از داکر، می توانید کانتینرها را بسازید و اجرا کنید و image های کانتینر را ذخیره و به اشتراک بگذارید.

کوبرنتیز برنامه های کاربردی توزیع شده و کانتینری را که داکر ایجاد می کند هماهنگ و مدیریت می کند. همچنین زیرساخت مورد نیاز برای استقرار و اجرای آن برنامه‌ ها را بر روی خوشه ‌ای از ماشین ‌ها فراهم می ‌کند.