«Kubernetes» ابزار بسیار مهمی برای مدیریت کانتینرها است. این ابزار، مدیریت فرایند توسعه اپلیکیشن‌ها را ساده‌تر کرده است. استفاده از کانتینر در زمان ساخت اپلیکیشن‌، فرایند انجام کارها را سریع‌تر و ساده‌تر می‌کند. این روش برای توسعه‌دهندگانی مناسب است که می‌خواهند محصولاتی با انعطاف‌پذیری و مقیاس‌پذیری بالا ایجاد کنند. برای اینکه بهتر متوجه شویم Kubernetes چیست باید اطلاعاتی درباره داکر و کانتینر‌ها نیز داشته باشیم. برنامه نویسان از «داکر» (Docker) برای قرار دادن اپلیکیشن‌ها در کانتینر استفاده می‌کنند. داکر فرایند ساخت و اجرای کانتینر را ساده‌تر کرده است. اما مدیریت تعداد زیاد کانتینر‌ها بر روی کامپیوتر‌های مختلف، با استفاده از داکر بسیار مشکل است. Kubernetes به وجوده آمد تا مشکل مدیریت کانتینر‌های زیاد بر روی سیستم‌های مختلف را حل کند. با کمک Kubernetes می‌توانیم اپلیکیشن‌های قدرتمند و انعطاف‌پذیری ایجاد کنیم.

آنچه در این مطلب می‌آموزید:

  • با مفهوم کلی Kubernetes آشنا می‌شویم.

  • مفاهیم کلیدی و لغات فنی Kubernetes را می‌آموزیم.

  • با معماری Kubernetes و گره‌های کارگر و Master آشنا می‌شویم.

  • Kubernetes را با سایر پلتفرم‌های مدیریت کانتینر مقایسه می‌کنیم.

  • مهم‌ترین ویژگی‌های Kubernetes را یاد گرفته و آن را با داکر مقایسه می‌کنیم.

  • اصلی‌ترین مزیت‌های استفاده از Kubernetes را شاخته و با موارد استفاده از آن آشنا می‌شویم.

فهرست مطالب این نوشته
997696

در این مطلب از مجله فرادرس، توضیح می‌دهیم که Kubernetes چیست. ابتدا دلیل استفاده از این ابزار را توضیح داده و روش کار آن را بیان می‌کنیم. بعد از آن، نحوه کار با Kubernetes را بررسی می‌کنیم. در پایان هم به چند سؤال پرتکرار درباره Kubernetes پاسخ می‌دهیم. مثل اینکه این ابزار چه ویژگی‌هایی داشته و چه تفاوتی با دیگر پلتفرم‌های مدیریت کانتینر دارد.

Kubernetes چیست؟

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

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

Kubernetes با نام «K8s» نیز شناخته می‌شود. این ابزار، پلتفرمی اوپن سورس است. Kubernetes انجام کارهایی مانند راه‌اندازی، مقیاس‌پذیری و مدیریت اپلیکیشن‌های کانتینرایز شده را به صورت خودکار انجام می‌دهد. به بیان ساده‌تر، اگر تعداد زیادی اپلیکیشن‌ با استفاده از کانتینر‌ها – برای مثال داکر – اجرا کرده‌اید، Kubernetes برای سازماندهی و مدیریت کارآمد این اپلیکیشن‌ها کمک خواهد کرد.

این پلتفرم، دقیقا مانند سیستم مدیریت ترافیک برای اپلیکیشن‌ها کار می‌کند. توسعه‌دهنده روش کار اپلیکیشن را به Kubernetes می‌گوید. برای مثال، توسعه‌دهنده مشخص می‌کند که چند کپی از اپلیکیشن اجرا شده و در صورت خرابی هر کانتینر چه اتفاقی بی‌افتد. بعد از آن Kubernetes با توجه به دستورات گرفته شده، از اپلیکیشن‌ها و کانتینر‌ها مراقبت می‌کند. Kubernetes تضمین می‌کند که اپلیکیشن به خوبی به کار خود ادامه دهد.

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

مثالی برای کمک به درک بهتر Kubernetes

برای کمک به درک بهتر روش کار Kubernetes در این بخش از مطلب، مثالی را بررسی کرده‌ایم. فرض کنیم که اپلیکیشنی برای تحویل غذا ساخته‌ایم. این اپلیکیشن با استفاده از داکر بر روی کانتینر بارگذاری شده و کار می‌کند. بعد از مشهور شدن اپلیکیشن مورد نظر، هزاران کاربر مختلف به صورت همزمان از آن استفاده می‌کنند. در این صورت برای اجرای صحیح اپلیکیشن، باید نسخه‌های بیشتری از آن را اجرا کنیم. اگر نخواهیم این کار را خودمان به صورت دستی انجام دهیم، می‌توانیم از Kubernetes کمک بگیریم.

  • دستورالعمل Kubernetes را به شکل زیر می‌نویسیم:

«همیشه ۵ کپی فعال از اپلیکیشن داشته باش. اگر یکی از این اپلیکیشن‌ها متوقف شد، آن را جایگزین کن. اگر کاربران بیشتری از اپلیکیشن استفاده کردند، تعداد کپی‌های اپلیکیشن‌ را به صورت خودکار افزایش بده.»

Kubernetes به دستورالعمل نوشته شده توجه کرده و همه کارها را به صورت خودکار طبق این دستور اجرا می‌کند.

لغات فنی Kubernetes چیست؟

به Kubernetes به عنوان شرکت سازمان‌یافته‌ای فکر کنید که تیم‌ها و سیستم‌های مختلفی در آن به خوبی کنار هم کار می‌کنند. در اثر اجرای مناسب رفتارهای تیمی، اپلیکیشن‌ها هم به خوبی و با کارآمدی بالا اجرا می‌شوند. اما در این سازمان، لغات فنی وجود دارد. به عنوان کاربر Kubernetes باید با این لغات فنی آشنا باشیم.

بیضی سبز رنگی که با فلش به پنج مستطیل قرمز رنگ متصل شده است.
چند مورد از مهم‌ترین لغات فنی Kubernetes

Pod

«پاد» (Pod) کوچک‌‌ترین واحد نرم‌افزاری است که می‌توانیم بر روی Kubernetes راه‌اندازی کنیم. هر پاد معمولا شامل یک یا چند کانتینر است. این کانتینرها برای اجرای برنامه باید در کنار یکدیگر کار کنند. بنابراین شبکه و حافظه یکسانی در بین این کانترینر‌ها به اشتراک گذاشته می‌شود. کانتینر‌های درون Pod می‌توانند به خوبی و بدون هیچ مشکلی با یکدیگر به عنوان سیستم واحد کار کنند.

گره

هر کدام از کامپیوترهای فیزیکی یا مجازی موجود در خوشه‌‌های Kubernetes یک «گره» (Node) هستند. خوشه‌های Kubernetes اپلیکیشن‌ها را اجرا می‌کنند. هر گره‌ای ابزارهای مورد نیاز خود را برای اجرای Pod-ها دارد. این ابزارها شامل موارد زیر هستند.

  • برنامه اجرای کانتینر – برای مثال می‌‌توانیم به داکر اشاره کنیم.
  • دستیار کمکی «Kubelet»
  • ابزار مدیریت شبکه «Kube Proxy»

خوشه

برای اجرای اپلیکیشن‌های کانتینری شده از کامپیوتر‌ها به صورت گروهی استفاده می‌کنیم. این گروه از کامپیوترها – یا گره‌ها – به صورت هماهنگ با هم کار می‌کنند. به این دسته از گره‌ها «خوشه کوبرنتیز» (Kubernetes Cluster) گفته می‌شود. هر گره‌، هم می‌‌تواند کامپیوتر واقعی باشد و هم مجازی. در هر خوشه Kubernetes دو نوع گره وجود دارد.

  • گره «Master»: به این گره «واحد کنترل» (Control Plane) هم گفته می‌‌شود. گره Master مانند مرکز فرماندهی خوشه عمل می‌کند. وظیفه گرفتن تصمیمات اصلی بر عهده این گره است. برای مثال اینکه اپلیکیشن‌ها بر روی کدام گره اجرا شوند، یا زمان‌بندی کارهای چگونه انجام شود. گره Master تمام فعالیت‌ها را ردگیری می‌کند.
  • گره‌ کارگر: «گره‌های کارگر» (Worker Nodes) ماشین‌هایی هستند که اپلیکیشن‌های درون کانتینر‌ها را اجرا می‌کنند. هر گره کارگر برای خود، ابزارهایی مثل دستیار Kubelet، نرم‌افزار «زمان اجرای کانتینر» (Container Runtime)، مانند داکر یا «Containerd» و ابزارهای مخصوص نظارت و مدیریت شبکه را دارد.
بازوی رباتیک در حال قرار دادن کانتینر‌های حاوی اپلیکیشن در کنار هم بر روی ریل است.

Deployment

برای اجرای اپلیکیشن‌های بزرگ، معمولا مجموعه‌ای از Pod-ها در داخل کانتینر‌های مختلف به کار برده می‌شوند. Kubernetes برای مدیریت این مجموعه از شیئی به نام «استقرار» (Deployment) استفاده می‌کند. این شیء از «به‌روزرسانی‌های قابل توصیف» (Declarative Updates) استفاده می‌کند. یعنی اینکه توسعه‌دهندگان خودشان به Kubernetes می‌گویند که چه کارهایی به چه صورت انجام شود. سپس Kubernete خودش به صورت خودکار دستورات داده شده را اجرا می‌کند.

ReplicaSet

«ReplicaSet» ابزاری است که تعداد دقیق Pod-ها را زیر نظر دارد. این ابزار کمک می‌کند همیشه تعداد مشخصی از Pod-های مشابه در حال اجرا باشند. به این صورت مطمئن می‌شویم برنامه‌، درست و بدون مشکل اجرا می‌شود.

سرویس

اپلیکیشن‌های فعال در خوشه‌ها با روش مشخصی به یکدیگر متصل می‌شوند. در Kubernetes به این روش، «سرویس» (Service) گفته می‌شود. Pod-ها با کمک این روش ارتباط پایداری با یکدیگر برقرار می‌کنند. حتی اگر Pod-ها تغییر کنند، باز هم این ارتباط از دست نمی‌رود.

Ingress

در Kubernetes روشی برای مدیریت دسترسی خارجی به سرویس‌های داخل خوشه وجود دارد. به این روش «Ingress» گفته می‌شود. این روش با کمک پروتکل‌های «HTTP» و «HTTPS» با سرویس‌های Kubernetes ارتباط برقرار می‌کند. در واقع مانند یک پراکسی معکوس عمل می‌کند.

ConfigMap

«ConfigMap» تنظیمات مربوط به پیکربندی را جدا از اپلیکیشن ذخیره می‌کند. بنابراین بدون دست‌کاری کدهای اصلی هم می‌توانیم تنظیمات را تغییر دهیم.

فرض کنیم که اپلیکیشن – در حال فعالیت یا آماده فعال شدن – به چند تنظیم خاص، نیاز دارد. برای مثال می‌توان به کلمه عبور پایگاه داده یا کلید API خاصی اشاره کرد. به‌جای کدنویسی کردن این تنظیمات به شکل صریح در اپلیکیشن – به این کار هارد کد کردن گفته می‌شود – فقط کافی است که آن‌ها را در ConfigMap ذخیره کنیم. خود اپلیکیشن می‌تواند در زمان اجرا این اطلاعات و تنظیمات را از ConfigMap بخواند. در نتیجه به‌روزرسانی تنظیمات بسیار ساده‌تر می‌شود. زیرا دیگر نیازی به تغییر دادن کدهای برنامه نداریم.

Secret

بیشتر اپلیکیشن‌ها دارای اطلاعات حساس و محرمانه‌ای هستند. این اطلاعات باید به شکل امنی ذخیره شوند. برای دانستن اینکه روش ذخیره اطلاعات محرمانه در Kubernetes چیست، باید با Secret آشنا شویم. «محرمانه» یا (Secret) تکنیکی برای ذخیره‌سازی اطلاعات حساس است. برای مثال می‌توانیم به موارد زیر اشاره کنیم.

Secret تمام اطلاعات حساس موجود در خوشه Kubernetes را ذخیره می‌کند.

حجم پایدار

در خوشه‌های Kubernetes بخش خاصی از حافظه به نام «PV» وجود دارد. توسعه‌دهندگان و برنامه‌ها می‌توانند اطلاعات خود را در آن ذخیره کنند. این بخش از حافظه بعد از حذف شدن Pod-ها یا ری‌استارت شدن آن‌ها حذف نمی‌شود. به این بخش از حافظه «حجم پایدار» (Persistent Volume | PV) گفته می‌شود.

کانتینر‌های نورانی درجاده‌های اطلاعاتی حرکت می‌کنند - Kubernetes چیست

فضای نام

«فضای نام» (Namespace) مانند محیطی مجزا در خوشه‌های Kubernetes است. این محیط به برنامه نویسان کمک می‌کند تا منابعی مانند Pod-ها، سرویس‌ها و Deployment-ها را سازماندهی و ایزوله کنند.

Kubelet

در این قسمت توضیح داده‌ایم که «Kubelet» در Kubernetes چیست. Kubelet بر روی تمام گره‌های کارگر اجرا می‌شود. وظیفه Kubelet-ها این است که از اجرای درست و هماهنگ Pod-ها مطمئن شوند.

Kube-Proxy

«Kube-Proxy» تمام عملیات مربوط به شبکه‌های درون خوشه‌های Kubernetes را مدیریت می‌کند. این ابزار کمک می‌کند تا Pod-های داخل خوشه بتوانند به‌خوبی با هم ارتباط داشته باشند.

در ادامه مطلب روش راه‌اندازی و مدیریت اپلیکیشن‌ها با استفاده از Kubernetes را به شکل مفهومی توضیح داده‌ایم.

راه‌اندازی و مدیریت اپلیکیشن‌های کانتینری شده

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

  • گام اول: Kubernetes را نصب کرده و خوشه‌های Kubernetes را راه‌اندازی کنید. در زمان کار با Kubernetes حداقل یک گره Master و دو گره کارگر باید وجود داشته باشند. خوشه‌های Kubernetes را می‌توان در هر فضای ابری راه‌اندازی کرد. فقط فضای ابری باید سرویس Kubernetes را فراهم کند.
  • گام دوم: اکنون باید «فایل اعلامیه راه‌اندازی» (Deployment Manifest File) ایجاد کنیم. در این فایل تعداد Pod مورد نظر خود، «Image» کانتینر و منابع مورد نیاز اپلیکیشن را مشخص می‌کنیم. بعد از ساختن این فایل از دستور «kubectl» برای به کار انداختن آن استفاده می‌کنیم.
  • گام سوم: بعد از ساختن Pod-ها باید آن‌ها در دسترس کاربران خارج از سیستم قرار بدهیم. به این منظور باید فایل دیگری بنویسیم. در این فایل نوع سرویس – مانند «Load Balancer» یا «Cluster IP» – پرت‌های قابل استفاده و سلکتور‌ها را مشخص می‌کنیم.

آموزش شبکه‌های کامپیوتری با کمک فیلم‌های فرادرس

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

مجموعه آموزش شبکه های کامپیوتری – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش شبکه های کامپیوتری از دوره مقدماتی تا پیشرفته هدایت شوید.

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

در ادامه مطلب به بررسی نقاط قوت Kubernetes پرداخته‌ و گفته‌ایم که مهم‌ترین مزیت‌های استفاده از Kubernetes چیست.

مزایای استفاده از Kubernetes چیست؟

Kubernetes ابزاری است که برای مدیریت اجرای همزمان اپلیکیشن‌ها بر روی کانتینر‌های مجزا از هم تولید شده است. وجود این ابزار دارای چند مزیت مهم است. یکی از مهم‌ترین این مزیت‌ها مدیریت و استقرار خودکار اپلیکیشن‌ها است. برای توضیح دادن اینکه فایده استفاده از Kubernetes چیست، در فهرست پایین، چند مزیت مهم آن را معرفی کرده‌ایم.

  • اجرای خودکار کارها: اگر برای اجرای اپلیکیشن‌های خود از Kubernetes استفاده می‌کنید، دیگر نیاز نیست بیشتر کارها را به صورت دستی انجام دهید. Kubernetes خودش اپلیکیشن مورد نظر را راه‌اندازی می‌کند. اگر تعداد کاربرانش زیاد شود، اندازه اپلیکیشن را بزرگتر می‌کند. هم چنین اپلیکیشن را در داخل کانتینر‌ها اجرا می‌کند.
  • کاهش خطاها: استفاده از Kubernetes باعث کاهش خطا می‌شود. بیشتر خطاها بخاطر دخالت انسانی اتفاق می‌افتند. خودکارسازی فعالیت‌ها امکان بروز خطاها را کمتر می‌کند. در نتیجه فرایند استقرار اپلیکیشن به صورت کارآمدتری اجرا می‌‌شود.
  • مقیاس‌پذیری: توسعه‌دهندگان بر اساس ترافیک ورودی اپلیکیشن، می‌‌توانند تعداد کانتینرها را بیشتر یا کمتر کنند. به این توانایی مقیاس‌پذیری گفته می‌‌شود. Kubernetes به صورت خودکار این کار را نجام می‌دهد. Kubernetes برای انجام این کار از مقیاس‌پذیری افقی Pod-ها استفاده می‌کند. وقتی که تعداد کاربران اپلیکیشن زیاد شود، Kubernetes، از Pod-های بیشتری استفاده می‌کند. و وقتی تعداد کاربران اپلیکیشن کاهش پیدا کنند، Pod-های اضافی را حذف می‌کند.
  • دسترسی بالا: با کمک Kubernetes می‌توانیم دسترسی بالایی به اپلیکیشن‌ها داشته باشیم. همچنین استفاده از این ابزار مشکلات مربوط به تاخیر در دسترسی برای کاربران نهایی را کاهش می‌دهد.
  • مقرون‌به‌صرفه بودن: اگر بیشتر از نیازمان از زیرساخت‌ها استفاده کنیم، هزینه‌ها زیاد می‌شوند. با کمک Kubernetes می‌توانیم فقط به اندازه‌ مورد نیاز از منابع استفاده کنیم. Kubernetes کمک می‌کند منابع را هدر ندهیم و در نتیجه در هزینه‌ها صرفه‌جویی می‌شود.
  • افزایش کارایی توسعه‌دهندگان: توسعه‌دهندگان به‌جای توجه بر مراحل راه‌اندازی اپلیکیشن‌ها فقط بر روی نوشتن کدهای بخش‌های اصلی برنامه تمرکز می‌کنند. زیرا Kubernetes بیشتر کارهای مربوط به راه‌اندازی و مقیاس‌پذیری فرایند‌ها را به صورت خودکار انجام می‌دهد.

موارد استفاده از Kubernetes در دنیای واقعی

برای دانستن اینکه موارد استفاده از Kubernetes چیست، در این بخش از مطلب، چند مورد از رایج‌ترین کاربردهای آن را نوشته‌ایم.

  • «تجارت الکترونیک» (E-commerce): نرم‌افزار Kubernetes به توسعه‌دهندگان کمک می‌کند که وب‌سایت‌های تجاری خود را با رعایت «توازن بار» (Load Balancing) و «مقیاس‌پذیری خودکار» (Autoscaling) راه‌اندازی کرده و مدیریت کنند. با کمک این پلتفرم می‌توانید میلیون‌ها کاربر و نقل‌ و انتقالات داده را مدیریت کنید.
  • رسانه و سرگرمی: با کمک Kubernetes می‌توانید هر دو نوع داده ایستا و پویا را ذخیره کنید. در ضمن Kubernetes کمک می‌کند که اطلاعات بدون تاخیر به کاربرانی در سراسر جهان ارسال شوند.
  • خدمات اقتصادی: استفاده از Kubernetes برای کار اپلیکیشن‌های حیاتی گزینه بسیار خوبی است. زیرا سطح امنیتی بسیار خوبی ارائه می‌دهد.
  • بهداشت و سلامتی: با کمک Kubernetes می‌توانیم داده‌های مربوط به بیماران را ذخیره کرده و اطلاعات مربوط به سلامتی آن‌ها را به صورت دائم بررسی کنیم.
جاده‌هایی که کانتینر‌های حاوی اطلاحات بر روی آن به سمت یک ساختمان نورانی حرکت می‌کنند.

مقایسه Kubernetes با سایر پلتفرم‌‌های مدیریت کانتینر

در این بخش از مطلب، Kubernetes را با چند مورد از رقبای آن مقایسه کرده‌ایم. این نرم‌افزارها همگی پلتفرم‌هایی برای «هماهنگ‌سازی کانینترها» (Container Orchestration) هستند. پلتفرم‌های مورد مقایسه در این بخش «Kubernetes» و «Docker Swarm» و «OpenShift» و «Nomad» هستند.

برای درک کردن مطالب مقایسه‌ای بین Kubernetes و سایر پلتفرم‌ها لازم است بخوبی متوجه شویم که Kubernetes چیست. به این منظور پیشنهاد می‌کنیم فیلم آموزش رایگان Kubernetes چیست و چگونه می‌توان از کوبرنتیز استفاده کرد، را از فرادرس مشاهده کنید. لینک مربوط به این فیلم در پایین نیز قرار داده شده است.

راه‌اندازی

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

  • Kubernetes: در این پلتفرم، کانتینرها با استفاده از دستور kubectl  در خط فرمان شروع به کار می‌کنند. تمام تنظیمات مربوط به کانتینرها در فایل‌هایی به نام «اعلامیه» (Manifest) ذخیره می‌شوند.
  • Docker Swarm: در این نرم‌افزار، کانتینر‌ها با کمک فایل «Docker Compose» کار خود را شروع می‌کنند. در این فایل تمام تنظیمات مورد نیاز برای کانتینرها قرار دارد.
  • OpenShift: در این پلتفرم برای راه‌اندازی کانتینرها هم می‌توانیم از فایل‌های «اعلامیه» استفاده کنیم و هم از ابزار خط فرمان OpenShift.
  • Nomad: در این ابزار برای راه‌اندازی کانتینر باید فایل پیکربندی «HCL» را بنویسیم.

مقیاس‌پذیری

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

  • Kubernetes: در Kubernetes با اضافه کردن Pod-های بیشتر بر روی چندین گره مختلف می‌توانیم حجم بسیار زیادی از ترافیک ورودی را مدیریت کنیم.
  • Docker Swarm: در این ابزار می‌توانیم تعداد کانتینر‌ها را مدیریت کنیم. اما کیفیت و کارآمدی Kubernetes را ندارد.
  • OpenShift: در ابزار OpenShift هم می‌توانیم تعداد کانتینر‌ها را مدیریت کنیم. اما کیفیت و کارآمدی Kubernetes را ندارد.
  • Nomad: در ابزار Nomad نیز با اینکه می‌توانیم تعداد کانتینر‌ها را مدیریت کنیم، اما کیفیت و کارآمدی Kubernetes را ندارد.

مدیریت شبکه

مدیریت شبکه یعنی اینکه چطور کاربران بیرون از سیستم بتوانند به اپلیکیشن دسترسی پیدا کنند. در فهرست زیر، توان مدیریت شبکه این ابزارها را مقایسه کرده‌ایم.

  • Kubernetes: در این پلتفرم، برای بهتر شدن کارایی شبکه می‌توانیم از «پلاگین‌های» (Plugins) مختلف استفاده کنیم.
  • Docker Swarm: مدیریت شبکه در این پلتفرم بسیار ساده است، حتی ساده‌تر از Kubernetes.
  • OpenShift: سیستم مدیریت شبکه در این ابزار، بسیار پیشرفته است.
  • Nomad: هر تعداد پلاگین که توسعه‌‌دهندگان نیاز داشته باشند، در این ابزار قابل افزودن است.

حافظه

روش استفاده از حافظه و فضای ذخیره‌سازی یکی از ویژگی‌های بسیار مهم در پلتفرم‌های مدیریت کانتینر است. در فهرست پایین، این پلتفرم‌ها را از نظر مدیریت فضای ذخیره‌سازی بررسی کرده‌ایم.

  • Kubernetes: پلتفرم Kubernetes از تکنیک‌های ذخیره‌سازی مختلفی مانند «حجم پایدار» پشتیبانی می‌کند. در Kubernetes می‌توانیم از فضای ذخیره‌سازی ابری هم استفاده کنیم.
  • Docker Swarm: در این پلتفرم، به راحتی می‌توان از فضای ذخیره‌سازی محلی استفاده کرد.
  • OpenShift: پلتفرم OpenShift از هر دو فضای ذخیره‌سازی محلی و ابری پشتیبانی می‌کند.
  • Nomad: پلتفرم Nomad هم از هر دو فضای ذخیره‌سازی محلی و ابری پشتیبانی می‌کند.
کشتی پر از کانتینر‌های قرمز رنگ بر روی دریا شناور است. دو کانتینر آبی هم در سطح دریا قرار دارند. این کانتینر‌ها از خود نور متساعد می‌کنند.

در بخش بعدی مطلب، نوشته‌ایم که مهم‌ترین ویژگی‌های Kubernetes چیست و هر کدام را توضیح داده‌‌ایم.

مهم‌ترین ویژگی‌های Kubernetes چیست؟

در این بخش از مطلب، چند مورد از مهم‌ترین ویژگی‌های Kubernetes را به صورت فهرست‌وار بیان کرده‌ایم.

  1. زمان‌بندی خودکار: Kubernetes سیستم زمان‌بندی حرفه‌ای دارد که کانتینر‌ها را به‌خوبی روی گره‌های خوشه راه‌اندازی می‌کند. این سیستم یکی از دلایل بهینه‌سازی در مصرف منابع است.
  2. توانایی‌های مربوط به «خود ترمیمی» (Self-Healing): Kubernetes به صورت خودکار کانتینر‌های متوقف شده‌ را ری‌استارت کرده و برنامه ریزی مجدد می‌کند. در صورت نیاز، برای فعالیت آن‌ها مکان جدیدی هم انتخاب می‌کند.
  3. مقیاس‌پذیری افقی و توازن بار: Kubernetes بر اساس نیاز‌های اپلیکیشن، هم می‌تواند اندازه آن‌ را بزرگ‌تر کند و هم می‌تواند کاهش دهد.
  4. استفاده از منابع: Kubernetes برای استفاده از منابع، سیستم بهینه‌سازی و نظارتی پیشرفته‌ای دارد. این سیستم تضمین می‌کند که کانتینر‌ها از منابع در دسترس خود به صورت بهینه استفاده کنند. یعنی از اتلاف منابع جلوگیری می‌کند.
  5. گسترش و جمع‌آوری خودکار: Kubernetes به صورت خودکار کمک می‌کند اپلیکیشن همیشه درست کار کند. اگر نیاز باشد، آن را به نسخه جدید به‌روزرسانی می‌کند یا دوباره از نسخه‌های قبلی استفاده می‌کند.
  6. پشتیبانی از فضای ابری چندگانه و هیبرید: Kubernetes را می‌توان بر روی پلتفرم‌های ابری مختلف راه‌اندازی کرد. Kubernetes اپلیکیشن‌های کانتینری شده را بر روی هر نوع فضای ابری اجرا می‌کند.
  7. «توسعه‌پذیری» (Extensibility): پلتفرم Kubernetes بسیار توسعه‌پذیر است. به راحتی و با افزودن پلاگین‌های سفارشی و سایر ابزارهای مدیریتی می‌توان Kubernetes را توسعه داد.
  8. جامعه پشتیبانی: Kubernetes جامعه کاربری بزرگ و فعالی دارد. به همین‌ دلیل به صورت مکرر به‌روز‌رسانی‌های مختلفی برای آن ارائه می‌شوند. این بروز‌رسانی‌ها دائما باگ‌های پیدا شده را برطرف کرده و ویژگی‌های جدیدی به Kubernetes اضافه می‌کنند.

تفاوت داکر و Kubernetes چیست؟

از آن‌جا که معمولا داکر و Kubernetes در کنار هم استفاده می‌شوند، لازم است به شکل دقیق‌تری این ابزارها را بررسی کنیم. در این بخش از مطلب، توضیح داده‌ایم که تفاوت داکر و Kubernetes چیست. Kubernetes و داکر را می‌توان به عنوان ابزارهای مکمل هم در نظر گرفت.

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

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

  • هدف: داکر پلتفرمی برای ساخت، جابه‌جایی و اجرای کانتینر‌ها است. اما Kubernetes ابزاری برای «هماهنگ‌سازی کانتینر‌ها» (Container orchestration) است. این ابزار، اپلیکیشن‌های کانتینر‌سازی شده را راه‌اندازی و مدیریت می‌کند. همچنین در صورت نیاز، تعداد کانتینر‌ها را هم کم یا زیاد می‌کند.
  • توسعه‌دهنده: داکر توسط شرکت داکر «Docker Inc» توسعه داده شده است. در حالی که Kubernetes در ابتدا توسط گوگل طراحی و ساخته شد. اما اکنون به صورت یک نرم‌افزار اوپن سورس در دسترس همه قرار دارد. هرچند، بیشتر مراحل توسعه‌ آن را «بنیاد محاسبات ابری بومی» (Cloud Native Computing Foundation | CNCF) بر عهده دارد.
شش کامیون بر روی یک مدار الکتریکی قرار داشته و ابری بالای سر آن‌ها می‌بارد
  • مدیریت کانتینر: داکر کانتینر‌ها را به صورت مستقل از هم مدیریت می‌کند. اما Kubernetes می‌تواند تعداد زیادی کانتینر فعال بر روی کامپیوتر‌های مختلف را به صورت همزمان مدیریت کند.
  • مقیاس‌پذیری: در داکر برای زیاد کردن کانتینرها از دستورات docker run  یا docker-compose  به صورت دستی استفاده می‌شود. Kubernetes با استفاده از سیستم «مقیاس‌دهی خودکار افقی پاد»‌ (Horizontal Pod Autoscaler | HPA) به صورت خودکار، کانتینر اضافه می‌کند.
  • شبکه‌سازی: داکر به صورت پیش‌فرض از شبکه‌ی ساده‌ای استفاده می‌کند. این شبکه فقط بر روی یک کامپیوتر کار می‌کند. Kubernetes از شبکه بزرگ «Cluster-Wide» استفاده می‌کند. Kubernetes با کمک این شبکه، سرویس‌های مستقر بر روی چند کامپیوتر مختلف را به هم وصل می‌کند.
  • «توازن بار» (Load Balancing): داکر، سیستم مدیریت توازن بار ساده‌ای دارد که با کمک Docker Swarm کار می‌کند. Kubernetes با استفاده از سرویس‌ها و Ingress، سیستم توازن بار پیشرفته‌تری دارد.
  • «خود ترمیمی» (Self-Healing): در داکر اگر کانتینر به هر دلیلی متوقف شود، آن را باید دوباره‌ به صورت دستی، راه‌اندازی کرد. اما در Kubernetes کانتینر‌های متوقف شده یا خراب به صورت خودکار توسط Pod-ها جایگزین می‌شوند.
  • «به‌روزرسانی‌های چرخشی» (Rolling Updates): در داکر برای فعال شدن به‌روزرسانی‌های اپلیکیشن باید کانتینر را متوقف کرده و دوباره بسازیمشان. ولی در Kubernetes برای به‌روزرسانی اپلیکیشن فعال نیازی به متوقف کردن کانتینرها نداریم.
  • ذخیره‌سازی: داکر داده‌ها را بر روی «حافظه دائمی محلی» (Local Persistent Storage) نگهداری می‌کند. Kubernetes با استفاده از حافظه‌های مخصوصی مانند «Persistent Volumes | PV» و «Persistent Volume Claims |‌ PVC» داده‌ها را ذخیره‌سازی می‌کند.
  • مدیریت خوشه: سیستم مدیریت خوشه در داکر فقط محدود به Docker Swarm است. این سیستم نسبت به Kubernetes پیچیدگی کمتری دارد. اما قدرت آن‌ نیز کمتر است. Kubernetes با استفاده از چندین گره‌ مختلف، می‌تواند سیستم‌های توزیع شده بزرگ را مدیریت کند.
  • کاربرد: برای توسعه و اجرای اپلیکیشن‌های کانتینری شده بر روی یک کامپیوتر، داکر بهترین گزینه است. اما برای اجرا و مدیریت اپلیکیشن‌های کانتینری شده بر روی چندین کامپیوتر مختلف و در خوشه‌های زیاد، Kubernetes بهترین گزینه است.

معماری Kubernetes

Kubernetes از معماری «کاینت-سروری» استفاده می‌کند. در این معماری، گره Master بر روی یک کامپیوتر نصب شده و سایر گره‌ها بر روی کامپیوترهای دیگری با سیستم عامل لینوکس نصب می‌شوند. در نتیجه مدل «ارباب-برده‌ای» (Master-Slave) پیاده‌سازی می‌شود. در این مدل از گره Master برای مدیریت کانتینر‌های موجود بر روی گره‌های Kubernetes استفاده می‌شود. در تصویر زیر، روش کار گره Master را مشاهده می‌کنید.

فلوچارتی از چند شکل هندسی سبز رنگ که با خطوط سیاه به یکدیگر متصل هستند.
تصویر بالا معماری گره Master را نشان می‌دهد. این گره با گره کارگر تعامل دارد.

درباره گره‌های Kubernetes، چند نکته مهم وجود دارد. این نکات را در فهرست زیر، جمع‌آوری کرده‌ایم.

  • گره Master و تمام گره‌های تحت کنترل آن – همان گره‌های کارگر – با همدیگر «خوشه کوبرنتیز» (Kubernetes Cluster) را تشکیل می‌دهند.
  • توسعه‌دهندگان با کمک گره Master در Kubernetes می‌توانند، اپلیکیشن مورد نظر خود را در کانتینر‌های داکر راه‌اندازی کنند.
  • در داخل هر گره کارگر ممکن است، چندین کانتینر مختلف وجود داشته باشند.

در تصویر زیر، معماری درون گره کارگر را مشاهده می‌کنید.

فلوچارت معماری گره کارگر در kubernetes
در تصویر بالا معماری اجزای اصلی تشکیل دهنده گره کارگر را مشاهده می‌کنید. این گره با گره Master تعامل دارد.

مفاهیم کلیدی Kubernetes چیست؟

برای درک بهتر روش کار Kubernetes باید با دو مفهوم اصلی آشنا شویم. این مفاهیم را در فهرست زیر دسته‌بندی کرده‌ایم.

  1. عناصر گره Master در Kubernetes
  2. عناصر گره کارگر در Kubernetes

در ادامه این بخش تمام عناصر بالا را به صورت واضح معرفی کرده‌ایم.

عناصر گره Master در Kubernetes

گره Master در Kubernetes مسئولیت‌های مهمی بر عهده دارد. این مسئولیت‌ها شامل موارد زیر است.

  • مدیریت تمام اعضای خوشه
  • هماهنگ‌سازی تمام فعالیت‌های درون خوشه
  • تعامل با گره‌های کارگر

در نتیجه‌ی انجام این مسئولیت‌ها Kubernetes و اپلیکیشن راه‌اندازی شده به خوبی و بدون مشکل اجرا می‌شوند. اجرای این کارها مربوط به مرحله اول انجام تمام وظایف مدیریتی است. وقتی که Kubernetes را بر روی کامپیوتر خود نصب می‌کنیم، چهار بخش مهم از گره Master هم همراه با آن نصب می‌شوند. این چهار بخش را در ادامه توضیح داده‌ایم.

سرور API

نصب سرور API مهم‌ترین بخش برای دریافت تمام دستورات REST است. این دستورات برای مدیریت خوشه به کار برده می‌شوند. تمام وظایف نظارتی با استفاده از سرور API درون گره Master انجام می‌شوند. اگر بخواهیم که چیزی در Kubernetes ساخته، حذف یا به‌روزرسانی شود یا حتی اطلاعات خاصی نمایش داده شوند، دستورات مربوط به آن را با استفاده از سرور API ارسال می‌کنیم.

سرور API اشیاء API را بررسی کرده و راه‌اندازی می‌کند. برای مثال می‌توانیم به پرت‌ها، سرویس‌ها، پاسخ‌ها، کنترل‌کننده‌ها و Deployment-ها اشاره کنیم. این سرور برای انجام هرکاری با استفاده از API دسترسی فراهم می‌کند. توسعه‌دهندگان با استفاده از ابزار خاصی به نام «Kubectl» می‌توانند با این API-ها تعامل داشته باشند. Kubectl برنامه کوچکی است که با زبان برنامه نویسی Go نوشته شده. این برنامه برای اجرای دستوراتی که توسعه‌دهنده در خط فرمان می‌نویسد، با سرور API ارتباط برقرار می‌کند. ابزار Kubectl به برنامه نویسان برای ارسال دستوراتشان به خوشه‌های Kubernetes کمک می‌کند.

زمان‌بند

تمام ویژگی‌های مربوط به «زمان‌بند» (Scheduler) را در فهرست زیر یک به یک نوشته‌ایم.

  • زمان‌بند، مسئول زمان‌بندی پروژه است.
  • زمان‌بند به سرویسی در گره Master گفته می‌شود که بار کاری را بین گره‌ها توزیع می‌کند.
  • Scheduler مسئول ردگیری میزان کار انجام شده توسط گره‌ها است. بعد از بررسی تشخیص می‌دهد که کدام گره فضای بیکار دارد و می‌تواند وظایف بیشتری را بر عهده بگیرد.
  • زمان‌بند مسئول تقسیم Pod-ها بر روی گره‌های در دسترس است. این سرویس به قوانین نوشته شده در فایل پیکربندی نگاه کرده از آن‌ها برای مکان‌یابی صحیح Pod-ها استفاده می‌کند.

به طور خلاصه چنین باید گفت که وظیفه «زمان‌بند» تضمین اجرای بهینه و صحیح کارها و تخصیص پاد به گره‌های جدید است.

مدیر کنترل کننده

«مدیر کنترل کننده» (Controller Manager) را با نام ساده «کنترل کننده» هم می‌شناسند. کنترل‌کننده‌ها برنامه‌هایی هستند که دائما اجرا شده و خوشه‌ها را بررسی می‌کنند. این ابزارها با کمک سرور API اطلاعات را ارسال و دریافت می‌کنند. کنترل‌کننده‌ها با انجام دادن کارهای زیر به مدیریت خوشه‌های Kubernetes کمک می‌کنند.

  • ساختن فضای نام
  • حذف رویداد‌های قدیمی
  • Pod-های قدیمی یا حذف شده را با کمک Garbage Collection پاک می‌کنند.
  • پاک‌سازی گره‌های بی‌استفاده
  • و غیره

برای اینکه خوشه‌ها در حالت بهینه خود باشند، کنترل‌کننده‌ها همیشه آن‌ها را زیر نظر دارند. به این حالت، «حالت مطلوب» (Desired State) گفته می‌شود. اگر حالت فعلی خوشه‌ها همانند حالت مطلوب نباشد، کنترل کننده‌ها با اجرای اقداماتی این ناسازگاری‌ها را برطرف می‌کنند. در فهرست زیر، چند مورد از مهم‌ترین کنترل‌کننده‌ها را نام برده‌ایم.

  • «کنترل‌کننده تکرار» (Replication Controller)
  • «کنترل کننده مقصد» (Endpoint Controller)
  • «کنترل‌کننده فضای نام» (Namespace Controller)
  • «کنترل‌کننده اکانت سرویس» (Service Account Controller)

این کنترل‌کننده‌ها در کنار هم مسئول سلامتی و کارایی صحیح خوشه هستند. برای انجام این کار به طور دائم بررسی می‌کنند که Pod-ها و گره‌های درست به خوبی کار کنند.

ماینتور درخشان در بین مکعب‌های طلایی شناور در فضا

Etcd

ویژگی‌های «etcd» و کارکرد آن در کوبرنتیز را در فهرست زیر نوشته‌ایم.

  • «etcd» پایگاه داده‌ای کوچک و سبک است.
  • این پایگاه داده به صورت توزیع شده کار کرده و از ساختار کلید-مقدار برای ذخیره‌سازی داده‌ها استفاده می‌کند.
  • در Kubernetes از etcd به عنوان پایگاه داده اصلی استفاده می‌شود.
  • پایگاه داده etcd حالت خوشه‌ها را در هر لحظه ذخیره می‌کند.
  • از این پایگاه داده برای ذخیره‌سازی جزئیات تنظیمات، مانند مشخصات Subnet-ها، اطلاعات مربوط به پیکربندی و غیره هم استفاده می‌‌شود.
  • etcd با زبان برنامه نویسی Go نوشته شده است.

گره کارگر در Kubernetes چیست؟

هر گره کارگر در Kubernetes باید کارهای مهمی مانند موارد مورد اشاره در فهرست زیر را انجام دهد.

  • مدیریت ارتباطات شبکه‌ای بین کانتینر‌ها
  • تعامل با گره Master
  • تخصیص منظم منابع به کانتینرها
  • و غیره
یک بیضی آبی که با چند فلش به چهار مستطیل سبز رنگ متصل شده است.
در تصویر بالا مهم‌ترین عناصر گره کارگر را مشخص کرده‌ایم.

تمام سرویس‌های ضروری برای انجام این کارها در اختیار گره‌های کارگر قرار دارند. در ادامه این بخش از مطلب،‌ تمام عناصر «گره کارگر در کوبرنتیز» (Kubernetes Worker Node) را معرفی کرده‌ایم.

Kubelet

«Kubelet» دستیار اصلی گره‌های کارگر است. این ابزار، درون تمام گره‌های کارگر فعال در خوشه Kubernetes اجرا می‌شود. وظیفه آن تعامل با گره Master است. در فهرست زیر، مهم‌ترین مسئولیت‌های Kubelet را نوشته‌ایم.

  • این ابزار، دستور‌العمل‌های مربوط به Pod را از سرور API دریافت می‌کند. سپس کانتینر‌های درون Pod-ها را بر اساس آن دستورالعمل‌ها اجرا می‌کند.
  • Kubelet مسئول نظارت بر اجرای کانتینر‌های توصیف شده در پاد و اجرای صحیح و سالم آن‌ها نیز هست.
  • اگر Kubelet در عملکرد یکی از پادها مشکلی پیدا کند، اول آن پاد را خاموش می‌کند. سپس دوباره بر روی گره کارگر دیگری – همانند همین‌ گره – آن را اجرا می‌کند.

البته اگر کل گره کارگر با مشکل بزرگ و جدی روبه‌رو شود، گره Master آن را شناسایی کرده و گره کارگر مورد نظر را حذف می‌کند. سپس تمام پاد‌ها را به گره کارگر و سالم دیگری منتقل می‌کند.

Kube-Proxy

«Kube-Proxy» بخش اصلی سیستم مدیریت شبکه در خوشه‌‌ی Kubernetes است. این سیستم مسئول نگهداری تمام تنظیمات مربوط به شبکه است. در فهرست زیر مهم‌ترین وظایف Kube-Proxy را نوشته‌ایم.

  1. Kube-Proxy از شبکه توزیع شده بر روی تمام گره‌ها،‌ Pod-ها و کانتینر‌ها نگهداری می‌کند.
  2. این سرویس به کاربران خارج از شبکه برای اتصال و استفاده از اپلیکیشن کمک می‌کند.
  3. Kube-Proxy مانند یک پراکسی برای مدیریت ترافیک داده‌های ورودی و خروجی کار می‌کند.
  4. همچنین وظیفه نظارت بر توازن بار سرویس گره‌های کارگر را بر عهده دارد.
  5. Kube-Proxy به پروتکل‌های TCP و UDP در مسیر‌یابی شبکه‌ کمک می‌کند.
  6. وقتی که سرویسی شروع به کار کرده یا متوقف می‌شود، Kube-Proxy به سرور API گوش می‌دهد. سرور API تغییرات ایجاد شده در اندپوینت‌ها را اعلام می‌کند. Kube-Proxy هم با توجه به این تغییرات، مسیر‌های جدید را به خاطر سپرده و به کاربران برای رسیدن به آن سرویس‌ها کمک می‌کند.

pod

pod به مجموعه‌ای از کانتینر‌ها گفته می‌شود که همراه با هم بر روی میزبان مشترکی راه‌اندازی شده‌اند. با کمک pod می‌توانیم چند کانتینر وابسته به هم را به صورت منظم راه‌اندازی کنیم. pod مانند پوششی به دور این کانتینر‌ها رفتار می‌کند. بنابراین توسعه‌دهندگان می‌توانند، با این کانتینر‌ها تعامل کرده و آن‌ها را مدیریت کنند.

داکر

داکر ابزاری است که اپلیکیشن و تمام نیازمندی‌های آن را درون محیط ایزوله‌ای به نام کانتینر قرار می‌دهد. این مسئله باعث می‌شود که اپلیکیشن در هر جایی عملکرد یکسانی داشته باشد، هم در توسعه، هم در آزمایش یا حتی کاربرد واقعی. داکر به توسعه‌دهندگان برای ایجاد کردن، به اشتراک‌گذاری و اجرای اپلیکیشن‌ها با کمک کانتینر کمک می‌کند.

داکر مشهور‌ترین ابزار ساخت و مدیریت کانتینر در دنیا است. داکر در سال ۲۰۱۳ توسط شرکت «Dot Cloud» و با زبان Go توسعه داده شده‌ است. در حال حاضر افراد زیادی از داکر به‌جای «ماشین‌های مجازی» (Virtual Machines | VMs) استفاده می‌کنند. هدف از ساختن داکر هم کمک به توسعه‌دهندگان بود و هم مدیران شبکه. به همین دلیل است که بیشتر تیم‌های «DevOps» از داکر استفاده می‌کنند.

توسعه‌دهندگان بدون نگرانی درباره تفاوت نتایج در آزمایش یا استفاده واقعی در محیط‌های دیگر می‌توانند کدهای خود را توسعه دهند. دیگر مدیران شبکه درباره زیرساخت‌های کامپیوتری مختلف نگران نیستند. زیرا داکر به سادگی می‌تواند سیستم‌ها را با توجه به نیاز اپلیکیشن اضافه کرده یا حذف کند. داکر در «چرخه توسعه نرم‌افزار» (Software Development Cycle) نقش «محیط راه‌اندازی» (Deployment Stage) را بازی می‌کند.

فلوچارت روش مدیریت گره‌های کارگر توسط گره Master

چگونه با کمک فرادرس برنامه نویسی یاد بگیریم؟

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

برای تماشای فیلم‌های بیشتر می‌توانید بر روی تصویر زیر کلیک کرده و به صفحه اصلی این مجموعه آموزش هدایت شوید.

مجموعه آموزش برنامه نویسی – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی هدایت می‌شوید.

در ادامه مطلب به بررسی مهم‌ترین کاربردهای Kubernetes پرداخته‌ایم.

کاربردهای Kubernetes

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

اما سعی کرده‌ایم تا در این بخش از مطلب چند مورد از رایج‌ترین کاربردهای Kubernetes را معرفی کنیم.

  • معماری میکروسرویس‌ها: Kubernetes گزینه بسیار خوبی برای مدیریت معماری میکروسرویس‌ها است. میکروسرویس به معنای شکستن اپلیکیشن‌های بزرگ به قطعات کوچک‌تر و ماژولار است. هر کدام از این قطعات کوچک می‌توانند به صورت مستقل توسعه‌داده شده و راه‌اندازی شوند.
  • توسعه ابر-بومی: Kubernetes یکی از عناصر کلیدی در بخش «توسعه ابر-بومی» (Cloud-Native Development) است. «توسعه ابر-بومی» به معنای توسعه اپلیکیشن‌ با هدف اجرا در فضای ابری است. این اپلیکیشن‌ها از اول با هدف کار بر روی زیر‌ساخت‌های فضای ابری طراحی شده‌اند. این اپلیکیشن‌ها به راحتی مقیاس‌پذیر می‌شوند. همچنین، انعطاف‌پذیری و تاب آوری بالایی هم دارند.
  • یکپارچه‌سازی و تحویل مداوم: Kubernetes به خوبی با پایپ‌‌لاین‌های CI/CD کار می‌کند. در نتیجه توسعه‌دهندگان می‌توانند فرایند استقرار اپلیکیشن‌ها را به شکل خودکار راه‌اندازی کنند. از Kubernetes برای راه‌اندازی نسخه‌های جدید اپلیکیشن با حداقل زمان توقف کار هم استفاده می‌شود.
  • «استقرار ابری ترکیبی و چندگانه» (Hybrid and Multi-Cloud Deployments): فرقی نمی‌کند که از کدام ارائه‌دهنده فضای ابری خدمات بگیریم.زیرا Kubernetes همیشه روشی ثابت برای راه‌اندازی و مدیریت اپلیکیشن‌ها دارد. حتی می‌توانیم از Kubernetes بر روی «مراکز داده خصوصی» (Private Data Centers) یا لپ‌تاپ شخصی توسعه‌دهندگان هم استفاده کنیم. در نتیجه ساختن و مدیریت فرایند استقرار ترکیبی و چندگانه ساده‌تر شده است.
  • «محاسبات سریع» (High-Performance Computing): از Kubernetes برای مدیریت وظایف سنگین مربوط به محاسبات سریع هم استفاده می‌شود. برای مثال می‌توانیم به شبیه‌سازی‌های علمی، یادگیری ماشین و پردازش کلان داده‌ها اشاره کنیم.
  • «رایانش لبه‌ای» (Edge Computing): از Kubernetes در محاسبات مربوط به رایانش لبه‌ای نیز استفاده می‌شود. این پلتفرم می‌تواند اپلیکیشن‌های کانتینرسازی شده‌‌ای را مدیریت کند که بر روی وسایل لبه‌ای کار می‌کنند. به عنوان مثال‌‌هایی از وسایل لبه‌ای می‌توان به ابزارهای اینترنت اشیاء یا دستگاه‌های شبکه اشاره کرد.

جمع‌بندی

در این مطلب از مجله فرادرس متوجه می‌شویم که Kubernetes چیست و چگونه کار می‌کند. Kubernetes ابزاری قدرتمند برای مدیریت اپلیکیشن‌های کانتینرایز شده است. وقتی که اپلیکیشن‌ها به مرور زمان بزرگتر می‌شوند، کوبرنتیز مشکلات احتمالی را برطرف می‌کند. استفاده از Kubernetes قابلیت اتکاپذیری اپلیکیشن‌ها را افزایش می‌دهد. این پلتفرم به توسعه‌دهندگان کمک می‌کند که بدون سردرگم شدن در زمان کار با جزئيات فراوان، اپلیکیشن‌های خود را بر روی کانتینر‌ها راه‌اندازی کرده و توسعه دهند. این پلتفرم، وظایفی مانند راه‌اندازی، مقیاس‌دهی ، مدیریت منابع و غیره را به صورت خودکار انجام می‌دهد.

Kubernetes با توزیع اپلیکیشن‌ها در چندین گره، انعطاف‌پذیری، مقیاس‌پذیری و بهره‌وری بالایی را فراهم می‌کند. مفاهیمی مانند گره، خوشه، Pod و Deployment و Service به طور دقیق توضیح داده شده‌اند. استفاده از Kubernetes مزایایی مانند کاهش خطا، صرفه‌جویی در منابع و پشتیبانی از فضای ابری دارد. Kubernetes در صنایع مختلفی کاربرد دارد. عملکرد این پلتفرم شبیه به ابزارهایی مانند Docker Swarm و OpenShift است.

source

توسط expressjs.ir