آشنایی با کوبرنتیز

خوش اومدمدید به مقاله آشنایی با کوبرنتیز
کوبنتیز یک سیستم اوپن سورس قدرتمند است که در ابتدا توسط گوگل توسعه یافته و توسط بنیاد ابری (CNCF) پشتیبانی میشود و میتونه برای مدیریت اپلیکیشن های کانتینری در یک محیط کلاستری مورد استفاده قرار بگیره. هدف کوبرنتیز ارائه راه های بهتر برای مدیریت اجزا و خدمات مرتبط، توزیع شده در زیرساخت های مختلف است.
در مقاله آشنایی با کوبرنتیز از مجموعه آموزشی ابرآس، ما درباره چیستی کوبرنتیز، برخی از مفاهیم اساسی کوبرنتیز بحث خواهیم کرد و همچنین ما در مورد معماری سیستم، مشکلاتی که کوبرنتیز میتونه حل می کنه و مدلی که برای مدیریت پیاده سازی کانتینری و مقیاس بندی استفاده می کند صحبت خواهیم کرد.
راهنمای مقاله
Toggleکوبرنتیز چیه
Kubernetes، در سطح اولیه خود، سیستمی برای اجرا و هماهنگی اپلیکیشن های کانتینری در میان مجموعهای از ماشینهای مجازی است. Kubernetes پلتفرمی است که برای مدیریت کامل چرخه عمر اپلیکیشن ها و خدمات کانتینری با استفاده از روش هایی طراحی شده است که قابلیت پیش بینی، مقیاس پذیری و در دسترس بودن بالا را ارائه می دهد.
بهعنوان یک کاربر Kubernetes، میتوانید نحوه اجرای اپلیکیشن های خود و راههایی را که باید بتوانند با سایر اپلیکیشن ها یا دنیای خارج تعامل داشته باشند، تعریف کنید. میتوانید سرویسهای خود را افزایش یا کاهش دهید، بهروزرسانیهای لازمه را انجام دهید، و ترافیک را بین نسخههای مختلف اپلیکیشن هایتان تغییر دهید تا ویژگیهای جدیدی که آماده کردید را آزمایش کنید یا پیاده سازی های مشکلساز را بازگردانید به نسخه قبلی(rollback). Kubernetes رابط ها و پلتفرمهای قابل ترکیب را ارائه میکند که به شما این امکان را میدهد تا اپلیکیشن های خود را با درجات بالایی از انعطافپذیری، قدرت و قابلیت اطمینان تعریف و مدیریت کنید.
معماری کوبرنتیز
برای درک اینکه Kubernetes چگونه میتواند قابلیتهای ذکر شده را ارائه دهد و درک این موضوع که طراحی و سازماندهی کوبرنتیز در سطح بالا چگونه است میتونه برای ادامه مقاله آشنایی با کوبرنتیز مفید باشه. Kubernetes را می توان به عنوان یک سیستم ساخته شده لایه ایی تجسم کرد که هر لایه بالاتر پیچیدگی موجود در سطوح پایین را انتزاع می کند. (اما این یعنی چی؟)
Kubernetes ماشینهای فیزیکی یا مجازی منفرد را با استفاده از یک شبکه مشترک برای برقراری ارتباط بین هر سرور، چه ماشینهای فیزیکی یا مجازی، در یک کلاستر گرد هم میآورد. این کلاستر Kubernetes پلتفرم فیزیکی است که در آن تمام اجزا، قابلیت ها و بارهای کاری Kubernetes پیکربندی شده است.
آشنایی با کوبرنتیز
ماشینهای موجود (فیزیکی/مجازی) در کلاستر Kubernetes هر کدام نقشی در اکوسیستم Kubernetes دارند. یک یا چند سرور به عنوان سرور اصلی(Master) عمل می کنند. این سرورها با معرفی یک API برای کاربران و مشتریان قابلیت هایی مثل بررسی سلامت سرورها، تصمیمگیری در مورد بهترین روش تقسیم و تخصیص کار (معروف به «scheduling»)، و هماهنگسازی ارتباط بین سایر مؤلفهها، به عنوان دروازه برای کلاستر عمل میکند. کوبرنتیز گاهی اوقات به عنوان ارکستراسیون کانتینر نیز شناخته می شود. سرور اصلی به عنوان راهی برای تماس اولیه با کلاستر عمل می کند و مسئول تجزیه و تحلیل کلاستر کوبرنتیز است.
سایر ماشینهای این کلاستر بهعنوان ورکر(Worker) تعیین میشوند: سرورهایی که مسئول پذیرش و اجرای بارهای کاری با استفاده از منابع محلی و خارجی هستند. برای کمک به جداسازی، مدیریت و انعطافپذیری، کوبرنتیز اپلیکیشن ها و سرویسها را در کانتینرها اجرا میکند، بنابراین هر سرور ورکر باید به یک محیط اجرایی کانتینر (مانند Docker یا rkt) مجهز باشد. سرور ورکر دستورالعمل های کاری را از سرور اصلی دریافت می کند و بر اساس آن کانتینرها را ایجاد یا از بین می برد و قوانین شبکه را برای مسیریابی و هدایت ترافیک به طور مناسب تنظیم می کند. در این مقاله آشنایی با کوبرنتیر قراره به بررسی بیشتر همه موضوعات ذکر شده بپردازیم. (برای ادامه با ما همراه باشید)
اجزای تشکیل دهنده Master Node
همانطور که در بالا توضیح دادیم، سرور اصلی(Master) به عنوان کنترل اولیه برای کلاستر های Kubernetes عمل می کند. مستر نود به عنوان راه تماس اصلی برای مدیران و کاربران عمل میکند، و همچنین بسیاری از سیستمهای کلاستری را برای سرور های ورکر نسبتاً ساده ارائه میکند. به طور کلی، مؤلفههای روی سرور اصلی برای پذیرش درخواستهای کاربر، تعیین بهترین راهها برای ایجاد کانتینرها، تأیید اعتبار مشتریان و سرورها، تنظیم شبکههای کلاستر و مدیریت مقیاسبندی و بررسی سلامت با هم کار میکنند.
اجزا تشکیل دهنده مستر نود را می توان روی یک ماشین نصب کرد یا در چندین سرور توزیع کرد. ما در مقاله آشنایی با کوبرنتیز نگاهی به هر یک از اجزا بصورت جداگانه خواهیم انداخت.
ectd
یکی از اجزای اساسی که Kubernetes برای عملکرد به آن نیاز دارد، یک مرکز پیکربندی در دسترس برای ذخیره کانفیگ ها است. پروژه etcd که توسط تیم CoreOS توسعه یافته است، یک ذخیرهسازی کانفیگ بصورت جفت key/value است که میتواند به گونهای پیکربندی شود که بر روی چندین سرور پیاده سازی و استفاده سود.
Kubernetes از etcd برای ذخیره داده های پیکربندی استفاده می کند که توسط هر یک از سرور های کلاستر کوبرنتیز قابل دسترسی است. این قابلیت می تواند برای سرویس جدید استفاده شود و به اجزای سازنده کمک کند تا خود را مطابق با اطلاعات موجود پیکربندی یا پیکربندی مجدد کنند. همچنین به حفظ حالت کلاستر با ویژگی هایی مانند انتخاب لیدر(Leader) و قفل گذاری توزیع شده کمک می کند.
Kube-api-server
یکی از مهمترین سرویس های اصلی سرور API است. این سرویس مدیریت اصلی کل کلاستر را بر عهده دارد چرا که به کاربران اجازه میدهد تا حجم کار و واحدهای سازمانی Kubernetes را پیکربندی کند. همچنین مسئول اطمینان از مطابقت تنظیمات موجود در etcd و جزئیات سرویس کانتینرهای مستقر شده است. به عنوان پل بین اجزای مختلف برای حفظ سلامت کلاستر و انتشار اطلاعات و دستورات عمل می کند.
Kube-controller-manager
فارسیش میشه مدیر کنترلر که یک سرویس عمومی است که وظایف زیادی دارد. در درجه اول، کنترلکنندههای مختلفی را مدیریت میکند که وضعیت کلاستر را تنظیم میکند، همچنین این سرویس میتونه چرخه عمر بار کاری را مدیریت کند و کارهای معمول را انجام دهد. برای مثال، یک کنترلکننده تکرار (replication controller) تضمین میکند که تعداد کپیهای یکسان تعریفشده برای یک کانتینر، با تعداد پیاده سازی شده در حال حاضر در کلاستر مطابقت دارد. جزئیات این عملیات در etcd نوشته می شود، جایی که مدیر کنترلر تغییرات را از طریق سرور API مشاهده می کند.
Kube-scheduler
سرویس زمانبندی (scheduler) مسئول بررسی ظرفیت موجود در هر میزبان است تا مطمئن شود که حجم کاری بیش از منابع موجود برنامه ریزی نشده است. زمانبند باید ظرفیت کل و همچنین منابعی را که قبلاً به بارهای کاری موجود در هر سرور اختصاص داده شده است بداند.
Cloud-controller-manager
کنترلکنندههای ابری بهعنوان چسبی عمل میکنند که به Kubernetes اجازه میدهد با ارائهدهندگان با قابلیتها، ویژگیها و APIهای مختلف تعامل داشته باشند و در عین حال ساختارهای نسبتاً عمومی را در داخل حفظ کنند. این ویژگی ها به Kubernetes اجازه میدهد تا اطلاعات وضعیت خود را با توجه به اطلاعات جمعآوریشده از ارائهدهنده سرویس های ابری بهروزرسانی کند و همچنین منابع ابری را در صورت نیاز به تغییرات در سیستم تنظیم کند.
صحبت پایانی:
ممنون از شما که تا اینجا مقاله آشنایی با کوبرنتیز همراه ما بودید و یاری کردید, خوش حال میشم برای حمایت از مجموعه آموزشی ابرآس
این مقاله رو برای کسایی که واسشون میتونه مفید باشه ارسال کنین.