کوبرنتیز (Kubernetes)، فناوری متن-باز (Open-Source)، بوردهای رزبری پای (Raspberry Pi)، محاسبات خوشهای (Cluster Computing).
اینها کلماتی هستن که این روزها محبوبیت زیادی پیدا کردن و خیلی افراد تمایل دارن در موردشون صحبت کنن. این که معنی این کلمهها رو بدونین یک موضوعه، اینکه واقعا بدونین اونها چه کاری انجام میدن و دقیقا چی هستن یه موضوع دیگه است.
اما یک خوشهی رزبری پای به همراه MicroK8s، میتونه همهی این کلمهها رو برای ما معنی کنه.
در این پست قصد داریم، بررسی کنیم که چرا خوشههای رزبری پای رو با MicroK8s میسازن؟
علاوه بر اون در مورد کوبرنتیر (Kubernetes)، محاسبات خوشهای و قابلیتهای MicroK8s بیشتر صحبت میکنیم.
با یک سوال شروع کنیم:
چرا یک خوشه رزبری پای با Microk8s میسازیم؟
اگر بخوایم خیلی مختصر بگیم، میگیم برای اینکه منابع محاسباتیتون رو از کامپیوتر اصلی روی یک پشتهی کوچیک از بوردهای رزبری پای بارگذاری کنین.
اما جواب طولانی و سادهتر اینه:
چون شما میتونین از این خوشه به عنوان یک سیستم جداگانه استفاده کنین و یک سری از کارها رو به اون بسپرین.
در نتیجه به خودتون و کامپیوترتون فرصت استراحت میدین و میتونین کارهاتون رو توی مدت زمان کمتری و به طور موازی انجام بدین.
مثلا یک عکاس رو در نظر بگیرین که عکسهای با کیفیت و با وضوح بالایی میگیره که حجم زیادی هم دارن. اون میتونه کارهای مرتبط با انتقال، آپلود یا حتی رندر کردن این عکسها رو که کار وقتگیر و خستهکنندهای هم هست، به خوشهای از رزبریپایها بسپره و توی اون مدت با سیستم اصلی خودش مشغول نوشتن سفرنامه و داستان عکسها در وبلاگ شخصیش بشه.
چرا از رزبری پای استفاده کنیم؟
رزبریپای مجموعهای از رایانههای کوچیک و تک بورده که جهان رو تحت تاثیر خودش قرار داده. این بوردها توسط یک موسسه خیریه در انگلستان ساخته شدن که هدفش آموزش و آسون کردن ورود افراد به حوزهی فناوری بود.
"مأموریت ما این است که قدرت محاسبات و ساخت برنامههای دیجیتال را در دستان مردم سراسر جهان قرار دهیم."
بنیاد رزبری پای - The Raspberry Pi Foundation
مورد دیگهای که باعث شده رزبری پای ها مورد استقبال قرار بگیرن، اینه که اونها در برابر امکاناتی که ارائه میدن بسیار ارزون قیمت هستن. البته بسته به مدلی که میگیرین، طیف مختلف و گستردهای از ویژگیها، سخت افزارها و قابلیتهای مختلف رو در اختیارتون قرار میدن.
کوبرنتیز
این روزها دیگه کانتینرها به یک اصل اساسی برای اجرای برنامهها تبدیل شدن.
با استفاده و مدیریت کانتینرها شما میتونین کارایی برنامتون رو به حداکثر برسونین، DownTime رو کاهش بدین و عملکردهای مختلف برنامهتون رو انعطافپذیر کنین. علاوهبر اینها، توی وقت و هزینههاتون به صورت فوقالعادهای صرفهجویی کنین.
اینجا میخوایم یه مقداری در مورد کوبرنتیز که برای مدیریت کانتینرها ازش استفاده میشه صحبت کنیم. بعد از اون هم سراغ MicroK8 میریم.
کوبرنتیز چیست؟
کوبرنتیز یک پلتفرم قابل حمل، مقیاسپذیر و متن-باز برای مدیریت بار کاری و خدمات کانتینرهاست که هم پیکربندی و هم اتوماسیون رو تسهیل میکنه. وقتی کوبرنتیز رو اجرا کنین، در واقع دارین یک خوشه کوبرنتیز رو اجرا میکنین. یک خوشه شامل یک گره اصلی (Master) و حداقل یک گره کارگر (Worker) هست.
گره اصلی مسئول اینه که وضعیت خوشه رو در حالت مطلوبی نگه داره و گرههای کارگر هم مسئولیت اجرای برنامه رو به عهده دارن. این گرهها هسته اصلی کوبرنتیزهستن.
کوبرنتیز چه مشکلی را حل میکند؟
سوال بزرگ برای هر سیستم اینه که نسبت به تغییرات چجوری واکنش نشان بده؟
برنامههای کانتینر شده منابع سیستم عامل میزبان رو ایزوله میکنن و با این کار باعث افزایش کارایی اونها میشن. علاوه بر این به تفکیک منابع و در نتیجه بهینهسازی استفاده از اونها هم کمک میکنن.
کوبرنتیز مثل یک کشتیه که تمام کانتینرهای مرتبط با اجرای یک برنامه، داخل اون قرار دارن و توسط اون هدایت شده و به سمت مقصد (هدفشون) حرکت میکنن.
چرا کاری که کوبرنتیز میکند، اهمیت دارد؟
چه اتفاقی میافته اگر کانتینری که در حال اجرای یک برنامه است از کار بیفته؟ اگر ترافیک ورودی به کانتینر به صورت چشمگیری زیاد بشه، چی میشه؟ اگر خیلی کار داشته باشین و زمانی برای تخصیص منابع نداشته باشین باید چیکار کنین؟ اگر با دادههای محرمانه سروکار داشته باشین و نیازمند این باشین که از بارکاری محافظت کنین، چه کاری باید انجام بدین؟
خب، باید بگم کوبرنتیز همه این مشکلات رو حل میکنه.
با کوبرنتیز، شما به راحتی میتونین منابع تمام کانتینرهاتون رو به صورت خودکار ایجاد، حذف و مدیریت کنین. شما به پلتفرم میگین چقدر CPU و RAM به هر کانتینر اختصاص بده و اون هم این کار رو براتون انجام میده. اگر کانتینرها با خرابی روبهرو بشن و یا پاسخگو نباشن، کوبرنتیز به طور خودکار بار کاری رو از یک کانتینر به کانتینر دیگهای منتقل میکنه و از اطلاعات اونها پشتیبانگیری میکنه. کوبرنتیز به شما امکان میده اطلاعاتی مثل گذرواژهها، کلید SSH و علائم Auth را ذخیره و مدیریت کنین.
MicroK8s
خب، اگر کوبرنتیز (K8s) به همون اندازهای که همه میگن و هممون میدونیم خوبه، چرا از اون برای کارهای دیگه استفاده نکنیم؟
مثلا جایی که منابع به شدت محدود هستن و مدیریت منابع محاسباتی یک عامل محدود کنندهی عملکرده، برای مثال در لبهها.
جواب اینه که چون برای این کار از MicroK8s کمک میگیریم.
MicroK8s چیست؟
MicoK8s کوچکترین و سریعترین نسخه K8s است و تمام ویژگیهای مهم یک خوشه K8s استاندارد رو هم داره.
MicoK8s برای لبههایی با صدها هزار خط کد طراحی شده که دقیقاً همون چیزیه که برای مدیریت منابع و دستگاهها بهش نیاز داریم.
MicoK8s استقرار خوشههای تک مستر از کوبرنتیز رو خیلی آسون کرده. با استفاده از اون میتونین هر چیزی رو قبل از نمونهسازی یا استقرار، به راحتی مورد آزمایش قرار بدین.
MicroK8s چه مشکلی را حل میکند؟
دستگاههایی که در لبهها هستن، مستعد شکست هستن و مدیریت هرکدوم به صورت جداگانه، وقتگیر و پیچیدهاس. اگر یک گرهی مستر از کار بیفته، روش استانداردی برای اینکه گرههای کارگر به درستی به کارشون ادامه بدن، وجود نداره.
با استفاده از MicroK8 و با استفاده از یک رابط کاربری ساده میتونین هر دستگاه موجود در خوشه رو به صورت مرکزی مدیریت کنین. این کار باعث میشه پیچیدگی بهروزرسانیها و پشتیبانگیریها کاهش پیدا کنه و توسعهدهندهها و سازمانها بتونن مدیریت منابع و دستگاهها رو به راحتی انجام بدن.
چرا کاری که MicroK8s میکند، اهمیت دارد؟
مدیریت منابع لبه در حال حاضر یکی از مسالههای مهم برای توسعهدهندهها و کسبوکارهاست. اینترنت اشیا (IoT) یا اینترنت همه چیز (IoE)، بیشتر از هر چیز دیگهای از قانون مور پیروی میکنه.
خیلی ساده بخوام بگم، بر اساس قانون مور هر دو سال یکبار سرعت و توانایی رایانهها دو برابر میشه و قیمت اونها کاهش پیدا میکنه.
صنايع میتونن با بهبود و افزودن ویژگیهای جدید به سیستمهاشون با این موضوع مقابله کنن. اما مشکل اینجاست که لبه محدوديتهای زیادی در اندازه و تعداد منابعش داره.
با استفاده از MicroK8s و روش گره مرکزی اون، منابع بیشتری در دسترس قرار میگیرن و ایمنی و ارزش کانتینرها به عنوان یک روش مقیاسپذیر برای اجرای بارهای کاری مختلف به لبهها اضافه میشه.
محاسبات خوشهای
ایده ساده است. مجموعه ای از رایانهها (گرهها) رو روی یک شبکه متصل میکنن و به اصطلاح یک خوشه از رایانهها ایجاد میکنن. با این کار میتونن منابع (موجود در یک خوشه) رو به اشتراک بگذارن و بارهای کاری رو با سرعت بیشتر، کارآمدتر یا موازی اجرا کنن.
سه نوع رایانه خوشهای وجود داره.
- نوع اول: خوشههای تنظیم بار که برای توزیع منابع مورد استفاده قرار میگیرن.
- نوع دوم: خوشههای با کارایی بالا، که گاهی اوقات ابر رایانه یا سوپر کامپیوتر هم بهشون گفته میشه، که برای انجام محاسبات با حجم و هزینههای بالا، منابع رو تجمیع کرده و محاسبات رو انجام میدن.
- نوع سوم: خوشههایی با دسترسی بالا که عمدتاً برای افزونگی یا بازیابی شکست مورد استفاده قرار میگیرن.
برای هر یک از موارد فوق می تونید از MicroK8 استفاده کنید.
چرا محاسبات خوشهای مهم است؟
هدف محاسبات خوشهای اینه که گروهی از رایانهها رو به عنوان یک سیستم واحد و قوی نشون بده. اوایل، محاسبات خوشهای تقریباً تنها راه حل برای مقیاسپذیر کردن سیستمهای شرکتهای بزرگ بود. اما با ظهور سایر فناوریها، مزایایی مثل دسترسیپذیری بالا، انعطاف پذیری، تعادل بار، مدیریت خودکار پلتفرم، پردازش موازی، تقسیم منابع و ظرفیت بر اساس تقاضا افزایش پیدا کرد. K8s ترفندی هست که مدیریت کارآمد خوشه رو ممکن میکنه.
در مورد رزبری پای، محاسبات خوشهای و MicroK8s بیشتر بدانیم!
در وب سایت رزبریپای، آموزش ساخت یک OctaPi گذاشته شده. این یک آموزش جامع است که از نه بورد رزبری پای (هشت مورد برای خوشه، یکی به عنوان مشتری) به عنوان سرورها استفاده میکنه.
البته در این مثال به هیچ وجه از کوبرنتیز استفاده نشده اما با دیدنش اطلاعات جالبی بهدست میارین.
اگر علاقهمندین یک خوشه رزبریپای رو با استفاده از MicroK8s بسازین، یک آموزش برای شروع و استفاده از سایر فناوریهای جالب اینجا وجود داره.
در ادامه نحوه مدیریت گرهها در یک خوشه از رزبری پای ها رو با هم بررسی میکنیم.
گره اصلی و گرههای برگ
بعد از اینکه MicroK8s رو روی تمامی بوردهاتون نصب کردین، باید یک بورد رو به عنوان بورد اصلی انتخاب کنین.
روی بورد انتخاب شده، دستور زیر رو اجرا کنین:
sudo microk8s.add-node
این دستور یک رشته ارتباطی با فرم <master_ip>:<port>/<token> ایجاد میکنه.
افزودن گره
حالا باید دستور Join رو از Piای که میخواین به خوشه اضافهکنید، اجرا کنین:
microk8s.join <master_ip>:<port>/<token>
مثلا:
microk8s.join
10.55.60.14:25000/JHpbBYMIevZSAMnmjMHmFwanrOYCWZLu
با استفاده از دستور زیر شما باید بتونین گره جدید رو برای روی گره اصلی خود مشاهده کنید:
microk8s.kubectl get node
برای هر گره جدید شما باید دستور microk8s.add-node رو بر روی گره اصلی اجرا کنید، خروجی رو کپی کنین و بعد از اون دستور microk8s.join <master node output> روی گره برگ اجرا کنین.
حذف گرهها
برای حذف یک گره باید دستور زیر رو روی گره اصلی اجرا کنید:
sudo microk8s.remove <node-name>
Node-name رو میتونین با اجرای دستور sudo microk8s.remove <node-name> روی گره اصلی، به دست بیارین.
از طرف دیگه، با اجرای دستور زیر هم میتونین یه گره برگ رو از خوشه خارج کنین:
sudo microk8s.leave
امیدوارم این مقاله براتون مفید بوده باشه.