صبحانه کاری برای شروع رفاقت های کاری و تخصصی

کوبرنتیس چیست و چه کاربردها و مزایایی دارد؟

Kubernetes چیست؟
Avatar
نویسنده: سانیا عبدی‌پور
چهارشنبه 17 آبان 1402
مطالعه: ۱۸ دقیقه ۰ نظر ۹۳۳ بازدید

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

کوبرنتیس چیست؟

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

نام Kubernetes ریشه یونانی دارد و به‌معنی «سکان‌دار» یا «خلبان» است. حرفه‌ای‌ها این ابزار را K8S هم می‌نامند که به حروف ابتدایی و انتهایی کوبرنتیس و فاصله هشت‌حرفی بین آن‌ها اشاره می‌کند. کوبرنتیس در بخش زیرساخت ابری گوگل توسعه یافته و در سال ۲۰۱۴ به‌صورت متن‌باز ارائه شده است. این ابزار نتیجه تجربه ۱۵ساله گوگل در مدیریت اپ‌های کانتینری است و جامعه متن‌باز هم در توسعه آن مشارکت کرده‌اند.

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

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

برای درک بهتر مزایای کوبرنتیز، باید نگاهی به تاریخچه استقرار نرم‌افزارها بیندازیم:

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

آموزش نصب کلاسترینگ کوبرنیتیس Kubernetes 1.10 با Kubeadm در لینوکس Ubuntu را در مقاله زیر بخوانید.

نصب کلاسترینگ کوبرنیتیس

کانتینر چیست؟

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

کانتینرها مستقل از زیرساخت عمل می‌کنند و می‌توان آن‌ها را در توزیع‌های مختلف سیستم‌عامل یا زیرساخت ابری جابه‌جا کرد. ازجمله مزایای کانتینر درمقایسه‌با ماشین مجازی می‌توان به این‌ها اشاره کرد:

  • وابستگی نداشتن به زیرساخت در مراحل توسعه و تست: کانتینرها فارغ از محیط زیرساخت در لپ‌تاپ، سرور، محیط ابری و حتی هیبرید به یک شکل اجرا می‌شوند.
  • توزیع‌های پرتابل در OS و ابر: در ویندوز، اوبونتو، RHEL ،CoreOS، اکثر سرویس‌های ابری و… اجرا می‌شوند.
  • کاهش بار روی زیرساخت: استفاده از سیستم‌عامل مشترک و سبک‌بودن بسته‌های کانتینر درمقایسه‌با ماشین مجازی.
  • تولید و استقرار سریع اپلیکیشن: سهولت و بهره‌وری چشمگیر تولید فایل ایمیج کانتینر درمقایسه‌با ایمیج ماشین مجازی.
  • توسعه و یکپارچه‌سازی و استقرار پیوسته نرم‌افزارها: تولید و استقرار ایمیج‌های کانتینر متعدد و مطمئن با امکان بهینه‌سازی سریع و کارآمد.
  • جداسازی دغدغه‌های بخش توسعه و عملیات: جداسازی اپ‌ها از زیرساخت به‌واسطه تولید ایمیج‌های کانتینر در زمان تولید یا انتشار به‌جای زمان استقرار.
  • امنیت فراوان: کانتینر نرم‌افزارها را از یکدیگر ایزوله و دسترسی به داده‌ها را محدود می‌کند.
کوبرنتیز به زبان ساده

آشنایی با مفهوم Kubernetes

کلاستر کوبرنتیس چیست؟

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

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

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

خرید سرور مجازی

کاربردهای کوبرنتیس چیست؟

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

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

  • هماهنگ‌سازی کانتینرها در چندین سیستم میزبان
  • کنترل و خودکارسازی روند استقرار و به‌روزرسانی اپلیکیشن‌ها
  • ارتقای حافظه برای اجرای اپ‌های حالتمند (Stateful)
  • افزایش آنی مقیاس اپ‌های کانتینری و منابع آن‌ها
  • اطمینان از اجرای صحیح و دقیق اپ‌های مستقر
  • بررسی و اصلاح خودکار اپ‌ها با قابلیت‌های ارتقا و مقیاس‌پذیری خودکار

کوبرنتیس برای ارائه کامل این خدمات به پروژه‌های متن‌باز دیگر اتکا دارد. تعدادی از این اپ‌ها بدین‌شرح‌اند:

  • رجیستری ازطریق پروژه‌هایی مثل Docker Registry
  • شبکه‌سازی ازطریق پروژه‌های OpenvSwitch و مسیریابی لبه هوشمند
  • تله‌متری ازطریق Kibana و Hawkular و Elastic
  • امنیت ازطریق پرو‌ژه‌هایی مثل LDAP ،SELinux ،‌RBAC و OAUTH با لایه‌‌های چندمستأجری (Multitenancy)
  • خودکارسازی با افزودن پلی‌بوک‌های Ansible برای نصب و مدیریت چرخه عمر کلاستر

مفهوم Pod چیست؟ و چه جایگاهی در کوبرنتیس دارد؟ در مقاله زیر بخوانید.

Pod چیست؟

چرا به کوبرنتیس نیاز داریم؟

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

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

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

دیدگاه‌های نادرست درباره کوبرنتیس

کاربردهای گسترده کوبرنتیز باعث ایجاد برخی دیدگاه‌های نادرست درباره آن شده است. پیش از هرچیز باید بدانید که کوبرنتیس سیستم PaaS (پلتفرم به‌عنوان سرویس) سنتی و همه‌شمول نیست؛ چون این ابزار به‌جای سخت‌افزار در سطح کانتینر عمل و برخی قابلیت‌های شبیه به PaaS مثل استقرار و مقیاس‌بندی و متعادل‌سازی بار را ارائه می‌کند.

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

Kubernetes چطور کار می‌کند؟

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

  1. سطح کنترل؛
  2. ماشین‌های محاسباتی یا گره‌ها.

هر گره یا نود محیط خاص خودش را دارد که می‌تواند ماشینی مجازی یا فیزیکی باشد. این گره پادهایی را اجرا می‌کند که از کانتینرها تشکیل شده است. سطح کنترل نیز مسئولیت نگه‌داری حالت دلخواه کلاستر را بر‌عهده دارد؛ مثلاً اینکه کدام اپلیکیشن‌ها اجرا شوند و این اپ‌ها از چه ایمیج کانتینری استفاده کنند. کوبرنتیز مثل هر اپ دیگری در سیستم‌عامل اجرا می‌شود و با پادهای کانتینر اجرا‌شده در گره‌ها تعامل دارد.

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

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

مقایسه کوبرنتیس و داکر

داکر (Docker) هم ابزاری متن‌باز برای مدیریت کانتینرهاست و طرفداران زیادی دارد. نسخه متن‌باز داکر که Community Edition نیز نامیده می‌شود، کاملاً رایگان است؛ اما در‌کنار آن نسخه‌ای پولی به نام Enterprise Edition هم ارائه شده است که امکانات اضافه‌ای برای مدیریت کانتینرها و پشتیبانی دارد.

قابلیت‌های این دو ابزار تا حدودی متفاوت است؛ اما درمجموع، داکر از‌نظر امکانات یک رده پایین‌تر از Kubernetes قرار دارد. بسیاری Kubernetes را به‌دلیل ویژگی ماژولار و انعطاف‌پذیرتری بیشتر و سازگاری بیشتر با نیازهای سرویس‌دهنده‌های وب ترجیح می‌دهند.

داکر از‌نظر امنیت در سطح بهتری قرار دارد و کوبرنتیس از اکوسیستم متنوع‌تری برای مدیریت کانتینرها برخوردار است. برای مثال، کوبرنتیس می‌تواند از داکر برای افزایش قابلیت‌های مدیریتی و به‌عنوان ران‌تایم کانتینر استفاده کند.

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

مقایسه کوبرنتیز و داکر

تفاوت داکر و کوبرنتیس چیست؟

مؤلفه‌های کوبرنتیس

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

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

۱. اجزای سطح کنترل

اجزای سطح کنترل تصمیمات کلی مثل زمان‌بندی کلاستر یا شناسایی و پاسخ به رویدادهای کلاستر را اتخاذ می‌کنند؛ مثلاً شروع پاد جدید درصورت ناقص‌بودن کپی استقرار. اجزای سطح کنترل را می‌توان روی هر ماشینی در کلاستر اجرا کرد؛ اما برای سهولت بیشتر معمولاً تمام اجزا در یک ماشین و کانتینرهای کاربر در ماشین دیگری اجرا می‌شوند.

kube-apiserver .۲

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

etcd .۳

etcd مؤلفه ذخیره مقادیر مهم با قابلیت دسترسی درخورتوجه است که بین گره‌های مختلف توزیع می‌شود. وظیفه این مؤلفه ذخیره اطلاعات پیکربندی است و تنها ازطریق API سرور دردسترس قرار دارد؛ چرا‌که ممکن است حاوی داده‌های حساس باشد.

kubescheduler .۴

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

kube-controller-manager .۵

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

  • کنترلر گره: مسئول تشخیص و پاسخ‌دهی درصورت داون‌شدن گره
  • کنترلر EndpointSlice: برای ایجاد ارتباط بین سرویس‌ها و پادها، اشیای EndpointSlice را جمع‌آوری می‌کند.
  • کنترلر ServiceAccount: برای فضا نام جدید ServiceAccounts پیش‌فرض را ایجاد می‌کند.

cloud-controller-manager .۶

این مؤلفه امکان برقراری ارتباط بین کلاستر و API ارائه‌کننده سرویس ابری را برایتان فراهم می‌کند. دیگر کاربرد آن جداسازی مؤلفه‌های مرتبط با پلتفرم ابری از مؤلفه‌های لینک‌شده به کلاستر است. cloud-controller-manager تنها آن دسته از کنترلرهایی را اجرا می‌کند که مختص سرویس‌دهنده ابری شما هستند. اگر Kubernetes را روی سیستم محلی یا در محیط آموزشی اجرا کنید، کلاستر مدیر کنترلر ابر نخواهد داشت.

این مؤلفه هم مثل kube-controller چندین حلقه کنترل مجزا را در یک باینری ترکیب می‌کند تا به‌عنوان یک پردازه اجرا شوند. این کنترلرها به سرویس‌دهنده ابری وابسته هستند:

  • کنترلر گره: بررسی سرویس‌دهنده برای اطمینان از حذف یک گره درصورت پاسخ‌گونبودن به درخواست‌ها
  • کنترلر مسیر: تنظیم مسیرها در زیرساخت ابری
  • کنترلر سرویس: ایجاد و به‌روزسانی و حذف متعادل‌کننده‌های بار سرویس‌دهنده

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

مقایسه کوبرنتیس و داکر

۷. پاد

پاد به‌عنوان کوچک‌ترین بخش کوبرنتیس شامل کانتینرهای مستقر در یک گره است و نقش بسیار مهمی در مدیریت اپلیکیشن کانتینری ایفا می‌کند. بین کانتینرهای یک پاد آدرس IP ،IPC، نام میزبان و دیگر منابع مشترک است. کانتینرهای درون یک پاد از آدرس IP مختلفی درمقایسه‌با کانتینر پادهای دیگر استفاده می‌کنند. بدون وجود پاد، اجزای اپلیکیشن یا سرویس باید روی ماشین مجازی یکسانی اجرا شوند؛ اما پاد شبکه و حافظه را از زیرساخت پایه مستقل می‌سازد تا پروژه روی زیرساخت‌های مختلف اجرا‌شدنی باشد.

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

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

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

۸. کنترلر تکرار

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

۹. سرویس

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

Namespace .۱۰

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

Namespace کلاسترها را به واحدهای هوشمند و ایزوله تبدیل می‌کند تا داده‌ها بهتر و آسان‌تر مدیریت شوند. Kubernetes به‌طورخودکار چهار Namespace را به منابعی اختصاص می‌دهد که مستقر شده‌اند؛ اما هنوز تعیین نشده‌اند. این‌ها عبارت‌اند از:

  • منابع مستقر
  • پیکربندی سیستم
  • کاربری سیستم
  • اشیای اجاره‌ای

تعداد Namespaceها محدودیتی ندارند و استفاده اصولی از آن‌ها در تفکیک بخش‌های تست و توسعه کمک زیادی به تیم پروژه می‌کند. برای مثال، اپ‌های کوچک به Namespace نیازی چندانی ندارند؛ اما برای میکروسرویس‌های متعدد می‌توانید از آن‌ها بهره ببرید.

مؤلفه‌های گره یا نود

Kubelet .۱

این سرویس روی گره‌ها اجرا می‌شود و سلامت و عملکرد صحیح هر کانتینر را به سرور اصلی در یک کلاستر گزارش می‌دهد. Kubelet گره‌‌ها را ازطریق سرورهای API پیدا می‌کند و از اجرای صحیح همه کانتینرهای یک سرور مطمئن می‌شود. Kubelet کانتینرهایی را که Kubernetes ایجاد نکرده باشد، مدیریت نمی‌کند.

kube-proxy .۲

kube-proxy یکی از پراکسی‌های شبکه است که در کلاستر روی هر گره اجرا می‌شود و بخشی از سرویس کوبرنتیس را پیاده‌سازی می‌کند. این مؤلفه روی اجرای صحیح قواعد شبکه در گره‌ها نظارت می‌کند تا ارتباط بین کلاسترهای داخل یا خارج از شبکه برقرار بماند. درصورتی‌که لایه فیلتر پاکت سیستم‌عامل در‌دسترس باشد، kube-proxy از همان استفاده می‌کند؛ وگرنه خودش ترافیک را می‌فرستد.

۳. ران‌تایم کانتینر

ران‌تایم کانتینر (Container Runtime) نرم‌افزاری برای اجرای کانتینرهاست. این ابزار درواقع بخشی از موتور کانتینر به‌حساب می‌آید که با کرنل درارتباط است. کوبرنتیز از ران‌تایم‌های کانتینر مثل containerd و CRI-O و دیگر پیاده‌سازی CRI کوبرنتیس پشتیبانی می‌کند. CRI-O نوعی روش پیاده‌سازی CRI است که به کوبرنتیس اجازه می‌دهد تا از هر OCI برای اجرا استفاده کند. متداول‌ترین ران‌تایم runC است؛ اما دیگر ران‌تایم‌های کانتینر مانند crun و railcar و Kata Containers نیز استفاده می‌شوند.

جمع‌بندی

Kubernetes پلتفرمی متن‌باز و توسعه‌پذیر و پرتابل برای پیاده‌سازی و مدیریت برنامه‌های کانتینری است. این پلتفرم در سال ۲۰۱۴ منتشر شده و حاصل تجربه ۱۵ساله متخصصان گوگل در‌زمینه پردازش و اجرای اپ و سرویس در مقیاس بسیار بزرگ است.

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

سؤالات متداول

۱. کوبرنتیس چیست؟

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

۲. کوبرنتیس بهتر است یا داکر؟

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

۳. کاربردهای کوبرنتیس چیست؟

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.