**کوبرنتیز** (انگلیسی: Kubernetes) پلتفرم متن‌باز و منعطفی است که برای توسعهٔ خودکار (automating deployment)، مقیاس‌پذیری (scaling) و مدیریت برنامه‌های کانتینرسازی‌شده (containerized applications) استفاده می‌شود.

نسخه نخست کوبرنتیز را گوگل در سال ۲۰۱۵ میلادی ارائه کرد و اینک به‌صورت متن‌باز در دسترس عموم قرار دارد.

ریشه‌شناسی
----------

کوبرنتیز کلمه‌ای یونانی (κυβερνήτης) و به معنای فرماندار است. این کلمه با Cybernetics هم‌ریشه است که امروزه پسوند cyber در موارد مربوط به اینترنت به‌کار می‌رود. کلمه govern نیز از cyber مشتق شده‌است.

### تلفظ‌ها

کوبرنتیز در گویش انگلیسی بریتانیایی کیوبرنیتیز ادا می‌شود و مخفف آن کیتس (K8s) می‌باشد.

مفاهیم
------

کوبرنتیز یک دسته از بلاک‌های ساخته شده (Primitive) تعریف می‌کند که جمعاً مکانیزم‌هایی را جهت توسعه، نگه‌داری و مقیاس‌کردن اپلیکیشن‌ها بر اساس پردازنده (CPU)، حافظه(RAM) یا معیارهای دلخواه ارائه می‌کند.

کوبرنتیز Loosely Coupled و قابل انعطاف برای ورک‌لودهای مختلف است. این انعطاف‌پذیری توسط قسمت بزرگی از API کوبرنتیز ارائه شده که توسط اجزاء داخلی و همچنین افزونه‌ها و کانتینرهایی که روی کوبرنتیز اجرا می‌شوند مورد استفاده قرار می‌گیرند. پلتفرم کنترل خود را روی محاسبه و حافظه منابع با تعریف منابع به عنوان آبجکت اعمال می‌کند که می‌تواند مدیریت شود.

کوبرنتیز primary/replica architecture را دنبال می‌کند. اجزاء کوبرنتیز می‌توانند به به آنها تقسیم شوند که توسط یک راس (Node) و آن‌هایی که قسمتی از Control plane هستند مدیریت می‌شود.

محبوبیت کوبرنتیز
----------------

کوبرنتیزکوبرنتیز
برای استفاده از کوبرنتیز دلایل مهمی و کاربردی وجود دارد اما با این حال به بررسی چندین علت استفاده از کوبرنتیز می‌پردازیم.

### عملیات خودکار

یکی از اولین موارد در مورد مزایای کوبرنتیز می‌توانیم به خودکار بودن عملیات‌ها اشاره کنیم.

کوبرنتیز دارای دستورها داخلی برای رسیدگی به بسیاری از کارهای سنگینی است که در مدیریت اپلیکیشن‌ها انجام می‌شود و به شما این امکان را می‌دهد که عملیات روزانه را خودکار کنید.

کوبرنتیز به شما این اطمینان را می‌دهد که اپلیکیشن‌های شما همیشه همان‌طور که می‌خواهید اجرا می‌شوند.

### تفکیک زیرساخت

اگر کسی از ما سؤال بپرسد که یکی از مهم‌ترین مزایای کوبرنتیز چیست، می‌توانیم به تفکیک بودن زیرساخت اشاره کنیم.

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

این کار به توسعه دهندگان کمک می‌کند تا روی اپلیکیشن‌های خود تمرکز کنند و نگران محیط زیرساخت نباشند.

### پایش سلامت خدمات

کوبرنتیز به‌طور مستمر بررسی‌های لازم برای سلامتی خدمات شما را انجام می‌دهد و کانتینرهایی را که از کار می‌افتند یا متوقف شده‌اند را مجدداً راه‌اندازی می‌کند و تنها زمانی خدمات را در دسترس کاربران قرار می‌دهد که اطمینان حاصل کرده‌است که آن‌ها در حال اجرا هستند.

### کوبرنتیز چه تحولی ایجاد کرد؟

نگاهی به تاریخچه استقرار برنامه‌ها، تحول بزرگی که کوبرنتیز ایجاد کرد را بیشتر نمایان می‌کند.

استقرار(deploy) برنامه‌ها (applications) بر روی سرورهای فیزیکی انحصاری باعث تداخل مصرف منابع سیستمی (memory, CPU, Disk, I/O, Network) توسط برنامه‌های مختلف می‌شد، با ورود نرم‌افزارهای مجازی‌ساز این مشکل تا حدودی حل شد. ماشین‌های مجازی امکان تخصیص منابع اختصاصی، اضافه کردن و بروزرسانی برنامه‌های سیستمی و همچنین پشتیبان‌گیری سرد و گرم و دسترسی بالا (HA-High Availability) و بسیاری موارد مشابه برطرف کردند، اما هنوز برای شرکت‌های بزرگ کافی نبود؛ بسیاری از پردازش‌های سیستم‌های عامل در ماشین مجازی تکرارپذیر بود و این خود به معنی استفاده چندباره از ظرفیت محدود سرورها برای انجام کارهای یکسان بود. مهندسین کامپیوتر برای حذف این پردازش‌های تکرارپذیر که در سطح سیستم عامل انجام می‌شد راهکار کانتینری را ارائه و پیاده‌سازی کردند. استفاده مشترک از پردازش‌های سیستم عامل، مقیاس پذیری، ایزوله بودن (تفکیک‌پذیری کامل کانتینرها)، شبکه‌های داخلی کانتینرها، انتقال بدون نیاز به نصب مجدد پیشنیازهای نرم‌افزاری، تسریع فرایند CI/CD و بسیاری از این قبیل مزایا باعث شد تعداد زیادی از شرکت‌ها به سمت کانتینر کردن نرم‌افزارهای خود روی بیاورند.

کوبرنتیز راهکاری برای پیاده‌سازی و مدیریت یکپارچه برنامه‌های کانتینر شده ارائه داد. این پلتفرم برای خودکارسازی تسک‌های عملیاتی طراحی شده‌است. توسعه‌دهندگان می‌توانند با استفاده از الگوهای از پیش تعریف شده، فایل‌های تنظیمات را ساخته و یک برنامه را در محیط‌های development , stage , QA test , canary , production و … برچسب‌زنی و پیاده‌سازی کنند.

از کاربردهای دیگر کوبرنتیز می‌توان به موارد زیر اشاره کرد:

خودکارسازی و کنترل فرایند استقرار برنامه‌ها

مقیاس‌پذیری برنامه‌ها و افزایش محدودیت استفاده از منابع سیستمی

پایش مستمر صحت عملکرد برنامه‌ها با استفاده از health check endpoint

برنامه‌ریزی برای مقیاس پذیری خودکار برنامه

ایجاد امنیت از طریق پروژه‌های RBAC، LDAP, OAUTH، SELinux و …

منابع
-----

1. ↑  "First GitHub commit for Kubernetes". *github.com*. 2014-06-07.
2. ↑  "GitHub Releases page". *github.com*. 2017-03-28.
3. ↑
4. ↑  Sharma, Priyanka (2019-09-22). "Autoscaling based on CPU/Memory in Kubernetes — Part II". *Medium* (به انگلیسی). Archived from the original on 17 اكتبر 2019. Retrieved 2020-12-20. `{{cite web}}`: Check date values in: `|archive-date=` (help)
5. ↑  . بایگانی‌شده از اصلی در ۲۷ مارس ۲۰۱۹. دریافت‌شده در ۲۰ دسامبر ۲۰۲۰. پارامتر `|عنوان= یا |title=` ناموجود یا خالی (کمک)
6. ↑  "An Introduction to Kubernetes". *DigitalOcean* (به انگلیسی). Retrieved 2020-12-20.
7. ↑  . بایگانی‌شده از اصلی در ۶ ژوئیه ۲۰۱۵. دریافت‌شده در ۲۰ دسامبر ۲۰۲۰. پارامتر `|عنوان= یا |title=` ناموجود یا خالی (کمک)

* مشارکت‌کنندگان ویکی‌پدیا. «Kubernetes». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۶ آوریل ۲۰۱۷.
* مشارکت کننده در مزایای کوبرنتیز. «کوبرنتیز چیست» در وبلاگ ابر آسیاتک، بازبینی شده در ۲۲ فوریه ۲۰۲۳.

پیوند به بیرون
--------------

* وبگاه رسمی