Add Persian language

Co-authored-by: Tim Bannister <tim@scalefactory.com>
This commit is contained in:
sattarfeizollahibarough
2020-07-17 20:40:38 +04:30
committed by Tim Bannister
parent b0aef17772
commit bd0fb967d5
21 changed files with 958 additions and 12 deletions
@@ -0,0 +1,90 @@
---
title: کوبرنتیز چیست?
description: >
کوبرنتیز یک پلتفرم قابل انتقال، قابل گسترش و کد باز است که برای مدیریت اپلیکیشن‌های مبتنی بر کانتینر استفاده می‌شود و با استفاده از این پلتفرم می‌توان خودکارسازی و پیکره‌بندری توصیقی را به سادگی انجام داد.
content_type: concept
weight: 10
card:
name: مفاهیم
weight: 10
---
<!-- overview -->
هدف این صفحه بررسی اجمالی کوبرنتیز است.
<!-- body -->
کوبرنتیز یک پلتفرم قابل انتقال، قابل گسترش و کد باز است که برای مدیریت اپلیکیشن‌های مبتنی بر کانتینر استفاده می‌شود و با استفاده از این پلتفرم می‌توان خودکارسازی و پیکره‌بندی توصیقی را به سادگی انجام داد. کوبنتیز یک اکوسیستم بزرگ و به سرعت در حال رشد دارد. پشتیبانی از آن و ابزارهایش به صورت فراگیر در دسترس هستند.
نام کوبنتیز از واژه‌ای یونانی به معنی سکان‌دار یا ناخدا نشات گرفته است. شرکت گوگل این پروژه را در سال 2014 به صورت کد باز تعریف کرد. در واقع کوبرنتیز حاصل [بیش از پانزده سال تجربه شرکت گوگل](/blog/2015/04/borg-predecessor-to-kubernetes/) در فراهم آوردن محیط عملیاتی شلوغ و پر ترافیک است که با بهترین ایده‌ها و به‌روش‌های جامعه ادغام شده است.
## تاریخچه
نگاهی به گذشته در پاسخ به این سوال که چرا کوبرنتیز بوجود آمد موثر خواهد بود.
![Deployment evolution](/images/docs/Container_Evolution.svg)
**نحوه استقرار در زمان‌های بسیار قدیم:**
در گذشته‌ای نچندان دور، بسیاری از سازمان‌ها و شرکت‌ها برای اجرای برنامه‌های خود متکی به سرورهای فیزیکی بودند. در آن زمان هیچ راهی برای تعیین آستانه، برای استفاده از منابع برای سرورهای فیزیکی وجود نداشت، که این موضوع باعث ایجاد مشکل عدم تخصیص بهینه منابع می‌شد. برای مثال فرض کنید که چندین اپلیکیشن بر روی یک سرور فیزیکی در حال سرویس‌دهی هستند و یکی از این اپلیکیشن‌ها بیشتر منابع را به خودش اختصاص می‌دهد که این موضوع منجر به افت بهره‌وری در سایر اپلیکیشن‌ها شده است. راه‌کار ساده اولی که به ذهن می‌رسد آن است که هر اپلیکیشن را در سرور فیزیکی جداگانه نصب و راه‌اندازی کنیم. اما این راه‌کار به دلیل اینکه باید سازمان تعداد زیادی سرور خریداری کند باعث ایجاد مشکل می‌شود به خصوص از بعد مالی که سرورهای فیزکی جز دارایی‌های گران محسوب می‌شوند.
**نحوه استقرار در زمان پیدایش مجازی‌سازی:**
به عنوان یک راه‌کار برای مشکلی که پیش‌تر ذکر شد، مجازی‌سازی معرفی شد. این راه‌کار به شما اجازه می‌دهد که چندین ماشین مجازی را روی یک سرور فیزیکی مستقر کنید.
مجازی‌سازی به شما این اجازه را می‌دهد که از منابع یک سرور فیزیکی استفاده بهینه‌تری داشته باشید و همچنین این امکان را به شما می‌دهد که سیستم شما مقیاس‌پذیر باشد و به این صورت هزینه‌های سخت‌افزاری سازمان کاهش پیدا کند. با مجازی‌سازی شما این امکان را دارید که منابع سخت‌افزاری خود را به عنوان خوشه‌ای از ماشین‌های مجازی قابل استفاده مجدد تعریف کنید.
هر ماشین مجازی یک ماشین کامل با تمام اجزای لازم است. این اجزا شامل سیستم‌عامل مستقل و سخت‌افزار مجازی شده از قبیل پردازش‌گر مرکزی و حافظه اصلی است.
**نحوه استقرار در زمان پیدایش کانتینرها:**
کانتینرها نیز همانند ماشین‌های مجازی هستند با این تفاوت که کانتینرها از یک سیستم‌عامل مشترک بهره می‌گیرند. بنابراین، در مقایسه با ماشین‌های مجازی، کانتینر سبک‌تر هستند. مشابه ماشین‌های مجازی، کانتینرها نیز دارای فایل‌سیستم، پردازشگر مرکزی، حافظه و فضای پروسس مخصوص به خود هستند. ذکر این نکته ضروری است که کانتینرها از سیستم‌عامل لایه زیرین خود نیز مستقل هستند، بنابراین به راحتی این امکان وجود دارد که آنها را بین ابرهای مختلف و توزیع‌های مختلف سیستم‌عامل انتقال داد.
کانتینرها به علت ایجاد سایر مزایایی که در ذیل لیست شده‌اند نیز مورد توجه هستند:
* ساخت و استقرار اپیلیکشن با سرعت بالا: سادگی و بهره‌وری ساخت image در کانتینرها از ماشین‌های مجازی بهتر است.
* توسعه، ادغام و استقرار مداوم: به واسطه اینکه ساخت image و استقرار آن بسیار ساده و قابل اطمینان است این امکان وجود دارد که به راحتی در محیط عملیاتی استقرار پیدا کند و در صورتی که به هر نحوی استقرار دچار مشکل شد، عمل عقب‌گرد صورت گیرد.
* لحاظ کردن دغدغه‌های تیم‌های توسعه و عملیات: این انعطاف را برای تیم‌های توسعه فراهم می‌کند که بجای آنکه دغدغه زیرساختی داشته باشند فقط به توسعه اپلیکیشن فکر کنند و همچنین تیم عملیات فقط به نگهداری مناسب زیرساخت فکر کند.
* کانتینرها این امکان را فراهم می‌کنند که نه تنها بتوانیم زیرساخت و سیستم‌عامل را از جوانب مختلف تحت رصد داشته باشیم بلکه اپلیکیشن را نیز با متریک‌های مختلف مورد رصد و مشاهده قرار دهیم.
* سازگاری محیطی با محیط‌های مختلف مثل تست، پیش‌عملیاتی و عملیاتی: عملکرد کانتینری که در یک لپتاپ ایجاد شده است مشابه همان است که در سرور درحال اجرا است.
* قابلیت انتقال بر روی ابرها و سیستم‌عامل‌های مختلف: امکان اجرا بر روی سیستم‌عامل‌های اوبوبنتو، ردهت و همچنین بسیاری از ابرهای عمومی و خصوصی را دارد.
* مدیریت اپلیکیشن محور: کانتینرها سطح انتزاع را یک مرحله افزایش داده‌اند به گونه‌ای که در گذشته درگیر سیستم‌عاملی بودیم که بر روی سخت‌افزار اجرا می‌شد ولی امروز درگیر نگهداری از اپلیکیشنی هستیم که بر روی یک سیستم‌عامل با منابع منطقی است هستیم.
* میکروسرویس‌های مستقل، کشسان، توزیع‌شده: اپلیکیشن‌هایی که به اجزای کوچک‌تر و مستقل‌تری تبدیل شده‌اند می‌توانند به صورت خودکار مدیریت و استقرار یابند، در صورتی که اپلیکیشن‌هایی که به صورت یکپارچه توسعه یافته‌انداز این مزیت محروم هستند.
* ایزوله بودن منابع: پیش‌بینی بهره‌وری منابع.
* استفاده از منابع: بهترین بهره‌برداری از منابع.
## چرا به کوبرنتیز احتیاج داریم و برایمان چکار انجام می‌دهد {#why-you-need-kubernetes-and-what-can-it-do}
استفاده از کانتینرها یک روش موثر برای گروه‌بندی و اجرای اپلیکشن‌های شما است. در یک محیط عملیاتی، مدیریت کانتینرهایی که اپلیکشن‌ها در آنها اجرا می‌شوند به عهده شما است و باید مطمئن باشید که هیچ خرابی رخ ندهد؛ برای مثال اگر کانتینری از دسترس خارج شد، کانتینر دیگر باید شروع بکار کند و در دسترس باشند. با توجه به این نکته در صورتی که یک سیستم به صورت خودکار این فرآیند را کنترل و مدیریت کند اوضاع بهتر نخواهد بود؟
اینجاست که کوبرنتیز به کمک ما می‌آید. این سیستم چارچوبی را برای اجرای سیستم‌های توزیع شده به صورت انعطاف‌پذیر در اختیار قرار می‌دهد. کوبرنتیز مسئولیت مقیاس‌پذیری و خرابی‌های برنامه‌ی شما را به عهده می‌گیرد و آن را مدیریت می‌کند و به شما الگوهای استقرار ارائه می‌دهد. برای مثال شما می‌توانید به سادگی استقرار قناری را در سیستم خود مدیریت کنید. استقرار قناری، نوعی از استقرار در محیط عملیاتی است که در آن یک ویژگی نرم‌افزاری تنها برای گروهی از کاربران منتشر می‌شود و در صورتی که آن ویژگی موثر بود در اختیار سایر کاربران نیز قرار می‌گیرد.
کوبرنتیز موارد ذیل را فراهم می‌کند:
* **کشف سرویس و تنظیم بار**
کوبرنتیز می‌تواند با استفاده از DNS و یا آدرس IP یک کانتینر، آن را در اختیار فراخواننده قرار دهد. اگر ترافیک به سوی یک کانتینر زیاد شده باشد، کوبرنتیز قادر خواهد بود که تنظیم بار را انجام دهد تا استقرار پایدار باشد.
* **اراکستراسیون دستگاه‌های ذخیره‌سازی**
کوبرنتیز این اجازه را به شما می‌دهد که به صورت خودکار سیستم ذخیره‌سازی مورد نظر خود را مانند، هارد دیسک‌های سیستم جاری، ابرهای عمومی و غیره را به سیستم مانت کنید.
* **خودکارسازی عقب‌گرد**
این امکان برای شما فراهم شده است که وضعیت مورد نظر خود را برای استقرار کانتیرنرها با استفاده از کوبرنتیز مشخص کنید تا در ادامه کوبرنتیز وضعیت جاری را به وضعیت مورد نظر شما تغییر دهد. برای مثال؛ شما می‌توانید کوبرنتیز را به گونه‌ای خودکارسازی کنید که در یک عمل استقرار کانتیرنرهای جاری را حذف کرده و از منابع آنها برای ساخت کانتیرنرهای جدید در استقرار استفاده کند.
* **بین پکینگ خودکار**
کوبرنتیز از کلاستری از نودها تشکیل شده است که برای اجرای برنامه‌های کانتینری مورد استفاده قرار می‌گیرد. شما برای کوبرنتیز مشخص می‌کنید که هر کانتینر چه مقدار منابع پردازشی و حافظه اصلی را اشغال کند. با توجه به این نکته کوبرنتیز بهترین نود را برای استقرار کانتینر شما انتخاب می‌کند که از لحاظ مصرف منابع بهینه باشد.
* **احیای خودکار**
کوبرنتیز کانتیرنرهایی را که دچار مشکل شده‌اند را با کانتیرنرهای سالم جایگزین می‌کند، همچنین اگر کانتینری به پارامترهای بررسی کننده سلامت کانتینر واکنش نشان ندهد(این امکان وجود دارد تا پارامترهایی را برای بررسی سلامت کانتینر تعریف کنید) آن ار از بین می‌برد و تا زمانی که آماده سرویس‌دهی به مشتری نباشند آن را در دسترس قرار نخواهد داد.
* **مدیریت پیکره‌بندی**
کوبرنتیز این امکان را فراهم می‌کند که اطلاعات حساس مانند رمز عبور، توکن‌های OAuth و کلیدهای SSH را ذخیره و مدیریت نمایید. می‌توانید اطلاعات حساس و تنظیمات اپلیکیشن را بدون بازسازی image کانتینر خود انجام دهید.
## تصورات اشتباه راجع به کوبرنتیز
کوبنتیز یک سیستم پلتفرم به عنوان سرویس (PaaS) سنتی و همه‌چیز تمام نیست، از آنجایی که کوبرنتیز در سطح کانتینر فعالیت دارد و نه در سطح سخت‌افزار لذا امکانتی را فراهم می‌کند که بسیاری از پلفترم به عنوان سرویس‌ها آنها را ارائه می‌کنند مانند: استقرار، مقیاس‌پذیری، تنظیم سطح بار و سایر موارد. اما کوبرنتیز یک سیستم یکپارچه نیست و تمام این امکانات به صورت افزونه و گزینه در اختیار کاربر قرار می‌گیرند. کوبرنتیز در واقع بلوک‌های یک ساختمان را در اختیار توسعه‌دهنده قرار می‌دهد که توسعه‌دهنده با آنها می‌تواند پلتفرم توسعه مختص به خودش را با انتخاب هر افزونه یا گزینه و با انعطاف بسازد.
کوبرنتیز:
* محدودیتی برای انواع اپلیکشن مورد پشتیبانی ندارد. هدف کوبرنتیز آن است که از انواع بار کاری پشتیبانی کند به خصوص اپلیکشن‌های stateless، stateful و پردازش حجیم داده. اگر پلیکیشنی قادر به اجرا بر روی کوبرنتیز است، قاعدتاً بر روی کوبرنتیز عالی اجرا خواهد شد.
* کوبرنتیز وظیفه استقرار کد و همچنین ساخت (Build) اپلیکیشن شما را ندارد و فرایندهای (CI/CD) به وسیله فرهنگ سازمان و نیازمندهای فنی آن انتخاب می‌شود.
* کوبنتیز خدمات سطح اپلیکشن؛ مانند میان‌افزارهایی از قبیل (Message Buses)، چارچوب پردازش داده از قبیل Apache Spark، بانک‌های اطلاعاتی از قبیل MySQL یا سیستم‌های خوشه‌شده ذخیره‌ساز از قبیل Ceph را به صورت سرویس توکار ارائه نمی‌دهد. این اجزا می‌توانند بر روی کوبرنتیز به عنوان برنامه اجرا شوند.
* کوبرنتیز هیچ راه‌کار مانیتورینگ، مکانیزم لاگ، یا هشداری را دیکته نمی‌کند. کوبرنتیز فقط برای اثبات طرح خود از چند ابزار ادغام و مکانیزم‌های جمع‌آوری متریک استفاده می‌کند که تمام آنها با توجه به نیاز می‌توانند تغییر کنند.
* استفاده از هیچ زبان یا سیستم پیکره‌بندی را اجباری نکرده است و یک رابط برنامه‌نویسی کاربردی قابل توصیف را ارائه داده است که با هر صورت توصیفی قابل بیان است.
* هیچگونه سیستم پیکره‌بندی، نگهداری و مدیریت را ارئه نمی‌کند.
* به علاوه، کوبرنتیز یک سیستم اراکستراسیون صرف نیست. در واقع، این سیستم نیاز به اراکستراسیون را حذف می‌کند.
## {{% heading "آنچه در ادامه خواهید دید" %}}
* نگاهی بندازید به [اجزای کوبرنتیز](/docs/concepts/overview/components/)
* آماده باشید برای [شروع کار با کوبرنتیز](/docs/setup/)?