XaaS Cloud Computing Loading ...
X
درخواست شما ثبت شد

درخواست شما با موفقیت ثبت شد. گروه پشتیبانی ما درخواست شما را بررسی و در اسرع وقت با شما تماس خواهند گرفت

Kubernetes چیست؟ (بخش اول)

Kubernetes چیست؟ ( بخش اول)

مقدمه

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

Kubernetes چیست؟

Kubernetes در سطح پایه ی آن یک سیستم برای اجرا و هماهنگ سازی برنامه های Container در سراسر کلاستر است. این پلتفرم جهت مدیریت کامل چرخه ی حیات برنامه ها و سرویس ها و ارایه ی بستری برای گسترش پذیری و در دسترس بودن بسیار بالا طراحی شده است. شما به عنوان مدیر Kubernetes میتوانید تعریف کنید که چگونه سرویس ها اجرا شوند و از چه طریقی با هم و دنیای بیرون خود ارتباط برقرار کنند. سیستم Kubernetes رابط مدیریتی را ارائه میدهد که کاربر بتواند سرویس ها و اپلیکیشن ها را با در جه ی بالایی از اطمینان پذیری و قابلیت اطمینان ایجاد کند.


معماری Kubernetes

Kubernetes ارتباط خود را با ماشین های مجازی یا ماشین های فیزیکی از یک شبکه ی اشتراکی مانند"flannel " که در هر ماشین وجود دارد استفاده می کند. در شبکه ی کلاستری Kubernetes تمامی اجزا، قابلیت ها و Workload پیکربندی می شوند.هر ماشین در اکو سیستم Kubernetes یک وظیفه و نقش را بر عهده دارد. یک ماشین (سرور) در کلاستر به انتخاب ما باید به عنوان Master در نظر گرفته شود. این سرور با ایجاد یک IP برای مدیر سیستم راه ورود به کلاستر و مدیریت آن را باز می کند، علاوه بر این تست سلامت و پایداری دیگر سرور ها و تعیین نقش و همچنین ارکستراسیون بین اجزای مختلف Kubernetes را به عهده دارد. در واقع سرور Master نقطه اصلی ارتباط با کلاستر است و مدیریت و نظارت متمرکز در سراسر سیستم Kubernetes را فراهم می کند.

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

همانطور که اشاره شد اپلیکیشن ها و سرویس های ما در کلاستر Kubernetes با کاینتر اجرا می شوند. کاربر جهت تعامل با کلاستر از IP سرور اصلی یا کلاینت و یا کتابخانه استفاده می کند. برای اجرای اپلیکیشن ها یا سرویس ها یک برنامه اعلامیه در فایل های JSON یا Yaml ارایه می شود که مشخص کننده این است که چه چیزی باید ایجاد شود و چگونه باید آن را مدیریت کرد. سرور Master فایل برنامه را می گیرد (JSON یا Yaml) و چگونگی اجرای آن در زیرساخت را با بررسی شرایط و وضعیت فعلی سیستم مشخص می کند. این گروه از برنامه های تعریف شده توسط کاربر که بر اساس یک نقشه خاص اجرا می شوند نتیجه ی نهایی Kubernetes را نشان می دهند.


اجزای سرور Master

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


etcd

یک جزء مهم Kubernetesکه جهت ذخیره سازی و نگهداری فایل های پیکربندی کلاستر است. پروژه ی etcd توسط تیم Core Os توسعه داده شده است، که بسیار سبک است و یک مکانی جهت نگهداری Key-Value ها می باشد که می تواند در سراسر کلاستر و Node ها توزیع شود. Kubernetes از etcd برای نگهداری فایل ها و داده های پیکربندی کلاستراستفاده می کند که قابل دسترسی توسط هر Node در کلاستر می باشد. این می تواند جهت جست و جوی سرویس ها ، پیکربندی یا پیکربندی مجدد خودشان جهت بروز نگه داشتن اطلاعات استفاده شود.



Kube-apiserver

یکی دیگر از سرویس های مهم در سرور Master، api-server است. این نقطه ی اصلی مدیریت و ورود به Kubernetes است که به کاربر اجازه می دهد Kubernetes را پیکربندی کند. در واقع kube-apiserver پلی است بین اجزای مختلف با هدف نگهداری و وحذف سلامت کلاستر و انتشار اطلاعات و اجرای دستور عمل ها. api server یک رابط RESTfull ایجاد می کند که به این معنی است ، بسیاری از ابزار ها و کتابخانه ها به راحتی می توانند با آن ارتباط برقرار کنند. راه ارتباطی کاربر از طریق ابزار Kubectl مهیا می شود که به صورت پیش فرض در سیستم وجود دارد.



Kube-Controller-Manager

Control Manager سرویسی است که وظایف زیادی دارد، از جمله کنترل کننده های وضعیت کلاستر، چرخه ی حیات کلاستر و همچنین انجام وظایف دیگر. به عنوان مثال یک Replication-Controller تضمین می کند که تعداد کپی ها (نسخه های یکسان) درست تعریف شده، یا تعداد مورد نظر Pod ها در کلاستر یکی باشند و به درستی در کلاستر قرار گرفته باشد. جزییات این عملیات در etcd نوشته می شود جایی که Controller Manager برای تغییرات به آن نگاه می کند. زمانی که تغییرات در کلاستر ایجاد می شوند، Controller اطلاعات جدید را می خواند و دستوری را اجرا می کند.


Kube-Scheduler

Kube-Scheduler فرایندی است که در واقع مسولیت و وظیفه را به Node های خاص در کلاستر اختصاص می دهد. این سرویس شرایط عملیاتی را می خواند همچنین تجزیه و تحلیل محیط زیرساخت فعلی و جایگزین می کند و وظیفه به Node قابل قبول داده می شود. Scheduler مسئول بررسی ظرفیت موجود در هر Node است تا مطمئن شود که حجم کاری اختصاص داده شده بیش از منابع موجود نباشد. Schedular باید ظرفیت کل و همچنین منابعی که قبلا در هر سرور اختصاص داده شده است را بشناسد.



اجزای سرور Node

در Kubernetes سرورهایی که Container روی آن ها کار می کنند به عنوان Node شناخته می شوند. سرور های Node دارای چندین الزام هستند که برای ارتباط با اجزای اصلی کلاستر و پیکربندی شبکه و اجرای Work load اختصاص یافته به آنها ضروری است.


Container

اولین جزء در هر Node باید یک Container همیشه اجرا باشد. به طور معمول این نیاز با نصب و راه اندازی Docker برطرف می شود، همچنین گزینه های دیگری نظیر rkt و runc وجود دارند.


Kubelet

نقطه تماس اصلی برای هر Node با کلاستر سرویس Kubeletاست این سرویس مسئول انتقال اطلاعات(دستور) به سرویس های کنترل کلاستر هست و از طریق آن در ارتباط با etcd Data Base برای خواندن جزییات پیکربندی یا نوشتن مقادیر جدید استفاده می کند. سرویس Kubelet در هر Node با اجزای اصلی کلاستر)سرور Master (ارتباط برقرار می کند تا در کلاستر احراز هویت شود و دستورات و وظایف را از سرور Master دریافت کند. فرایند Kubelet مسولیت نگهداری و دریافت وظایف است. در این زمان Container ها توسط فرمان های رسیده از سرور Master ایجاد یا حذف می شوند.


Kube-proxy

برای مدیریت شبکه و زیرشبکه) (subnetهر سرور در کلاستر و فعال سازی سرویس های دیگر یک سرویس کوچک، به نام Kube-Proxy درهر Node ایجاد می شود. این فرایند، درخواست ارتباطی را به Container مورد نظر داده و می تواند Load Balance اولیه را را انجام داده و و مطمئن شود که شبکه ی کلاستر در دسترس و قابل پیش بینی و همچنین ایزوله می باشد.




پایان بخش اول