آنچه در این مقاله میخوانید
- کوبرنتیز چیست؟
- کانتینر چیست؟
- کوبرنتیز متعلق به کیست؟
- کوبرنتیز چگونه کار میکند؟
- فرهنگ لغات کوبرنتیز: هر اصطلاح تخصصی چه معنایی دارد؟
- نحوه مدیریت ساختار نرمافزاری با کمک کوبرنتیز چگونه است؟
- کوبرنتیز چه ارتباطی با رایانش ابری دارد؟
- برای اجرای کوبرنتیز به چه امکاناتی نیاز دارید؟
- مزایای کوبرنتیز چیست؟
- تفاوت کوبرنتیز با داکر چیست؟
- نتیجهگیری
یکی از چالشهای همیشگی توسعهدهندگان نرمافزارهای مبتنی بر رایانش ابری، از دسترس خارج شدن این نرمافزارها و فرآیندهای زمانبر، خستهکننده و تکراری تخصیص منابع مشترک سرور به هر نرمافزار است. کوبرنتیز، نوعی سرویس نرمافزاری است که این فرآیندها را بهصورت خودکار به اجرا در میآورد. برای این که با کوبرنتیز کاملاً آشنا شوید، در این مقاله به 9 سؤال رایج در مورد آن پرداختهایم:
کوبرنتیز چیست؟
کوبرنتیز پلتفرمی برای مدیریت خدمات و برنامههای کانتینربندی شده است که فرآیندهای مربوط به استقرار، مدیریت و مقیاسپذیر کردن آنها را خودکار میکند.
کوبرنتیز اکوسیستمی عظیم است که بهسرعت در حال رشد بوده و از آنجا که یک نرمافزار آزاد است، در دسترس همه قرار دارد و جامعهٔ کاربری بزرگی برای ارائهٔ خدمات و پشتیبانی پیرامون آن شکل گرفته است.
نام کوبرنتیز ریشهای یونانی دارد و به معنای سکاندار کشتی یا خلبان است. برای اشاره به آن، نام کوتاه شدهٔ Kube را نیز استفاده میکنند. همچنین به صورت K8s نیز نوشته میشود که عدد هشت در این مخفف، نماینده هشت حرفی است که در کلمه Kubernetes بین حرفهای K و S قرار دارد.
برای درک بهتر مفهوم کوبرنتیز، باید با مفاهیم اپلیکیشنهای کانتینربندی شده بیشتر آشنا شوید.
کانتینر چیست؟
کانتینر یک اصطلاح رایج در رایانش ابری است. اپلیکیشنهای مدرن، با استفاده از کانتینرها ساخته میشوند. این کانتینرها، میکروسرویسهایی هستند که به همراه وابستگیها و پیکربندیهایشان، در قالب بستههایی قرار گرفتهاند. به بیان دیگر، در یک کانتینر تمامی کدها و فایلهایی که برای اجرای یک برنامه لازم است، بستهبندی شده است و میتوان روی هر زیرساختی آن را اجرا کرد. کانتینربندی کردن اپلیکشنها به برنامهنویسها و متخصصان حوزهٔ IT کمک میکند تا اپلیکیشنها را با سرعت و امنیت بیشتر بنویسند و به مرحله بهرهبرداری برسانند.
کوبرنتیز متعلق به کیست؟
تا سال ۲۰۱۴، کوبرنتیز بهصورت اختصاصی در گوگل استفاده میشد. در همین سال، این کمپانی تصمیم گرفت تا دسترسی به کوبرنتیز را برای همه آزاد کند. کوبرنتیز حاصل تجربه ۱۵ سالهٔ گوگل در زمینه اجرا و استقرار کانتینرهای متعدد است که گاهی تعداد آنها به دو میلیارد در هفته میرسید.
استقرار این کانتینرها توسط پلتفرم داخلی این شرکت یعنی Borg انجام میشد و این پلتفرم، به عنوان پدر کوبرنتیز شناخته میشود. انتشار کوبرنتیز بهصورت نرمافزار آزاد باعث شده تا شرکتهای دیگر هم بتوانند پروژههای نرمافزاری عظیم را همانند گوگل اجرا کنند و در زمینه بهبود و گسترش کوبرنتیز گام بردارند.
کوبرنتیز چگونه کار میکند؟
برای دانستن نحوه عملکرد کوبرنتیز، باید ابتدا با تاریخچه استقرار نرمافزارها آشنا شوید:
عصر استقرار سنتی
در این عصر، سازمانها برای استقرار و اجرای نرمافزارها، از سرورهای سنتی و فیزیکی استفاده میکردند. از آنجایی که این سرورها دارای ظرفیت کافی برای تأمین نیازمندیهای نرمافزاری نبودند و این نیازمندیها دائماً در حال گسترش بود، همیشه مشکل تخصیص منابع سختافزاری وجود داشت. این مشکل زمانی تشدید میشد که روی یک سرور، چند برنامه اجرا میشد و اگر یکی از برنامهها بیشتر منابع سخت افزاری موجود در سرور را به خود اختصاص میداد، سایر نرمافزارها از کار میافتادند. تخصیص یک سرور برای هر نرمافزار نیز بسیار گران تمام میشد.
عصر استقرار مجازی
برای حل مشکل ظرفیت محدود سرورهای فیزیکی، مجازیسازی به وجود آمد. با استفاده از این تکنولوژی، امکان اجرای چند ماشین مجازی روی یک پردازنده وجود دارد و هر نرمافزار، روی یکی از این ماشینهای مجازی اجرا میشود. این ماشینهای مجازی، دارای اصطلاحاً سختافزار مجازی و عملکرد مستقل نسبت به سایرین هستند و به همین دلیل، امنیت دادههای هر نرمافزار حفظ میشود. همچنین مجازیسازی منجر به صرفهجویی در هزینهها شده است.
عصر استقرار کانتینری
عملکرد کانتینرها شباهت زیادی به ماشینهای مجازی دارد، با این تفاوت که تمامی کانتینرها بهصورت مشترک از یک سیستمعامل استفاده میکنند و برخلاف ماشینهای مجازی، سیستمعاملهای اختصاصی و مجزا ندارند. البته کانتینرها نیز همانند ماشینهای مجازی دارای حافظه و سهم اختصاصی خود از پردازنده هستند.
کانتینرها بهترین راه برای دستهبندی و اجرای اپلیکیشنهای شما هستند. اگر شما توسعهدهنده نرمافزار هستید، باید کانتینرهایی را که اپلیکیشنهای شما را اجرا میکنند، مدیریت کنید و مطمئن شوید که هیچکدام از آنها از دسترس خارج نمیشود. برای مثال، اگر یکی از کانتینرها از دسترس خارج شود، شما باید کانتینر بعدی را راهاندازی کنید. کوبرنتیز به شما کمک میکند تا این فرآیند را بهتر مدیریت کنید و فرآیندهای مقیاسپذیر کردن منابع و همیشه در دسترس بودن نرمافزارهایتان را بر عهده میگیرد. با استفاده از این سرویس، میتوانید با خیال راحت از زیرساختهای کانتینرمحور استفاده کنید و وظایف اجرایی مربوط به آماده نگهداشتن کانتینرها را بهصورت خودکار دربیاورید.
در بخشهای بعدی، با نحوه مدیریت ساختارهای نرمافزاری با استفاده از کوبرنتیز آشنا میشوید؛ اما پیش از آن باید با معانی کلمات تخصصی مرتبط با کوبرنتیز آشنا شوید:
فرهنگ لغات کوبرنتیز: هر اصطلاح تخصصی چه معنایی دارد؟
دانستن معانی لغات تخصصی مرتبط با کوبرنتیز، کار با آن را آسانتر میکند:
صفحه کنترل یا Control Plane
صفحهٔ کنترل به مجموعهای از فرآیندها گفته میشود که گرهها را کنترل میکند. در این بخش، تخصیص وظایف به سایر بخشهای کلاستر صورت میگیرد.
گره (Node)
یک کلاستر(Cluster) کوبرنتیز از مجموعهای از سرورهای کارگر (Worker) به نام گره (Node) تشکیل میشود که برنامههای کانتینری روی آنها اجرا میشوند. گرهها (ماشینهای سختافزاری یا مجازی) وظایفی را که توسط صفحات کنترل به آنها محول شده، انجام میدهند. هر کلاستر دستکم یک گرهٔ کارگر دارد.
پاد (Pod)
پادها مجموعهای از یک یا تعدادی کانتینر هستند که روی گرهها مستقر میشوند. تمامی کانتینرهای موجود در یک پاد، دارای آدرس IP و Hostname مشترک هستند.
سرویس (Service)
سرویسها، تخصیص کار را از پادها مجزا میکنند. عملکرد پراکسیهای آنها باعث میشود تا علیرغم جابجایی و تغییر مکان پادها، تخصیص وظیفه به آنها بهدرستی انجام شود.
Kubelet
نوعی سرویس است که روی گرهها اجرا میشود و از شروع به کار و تداوم عملکرد کانتینر موردنظر، اطمینان حاصل میکند.
Kubectl
ابزاری برای پیکربندی کوبرنتیز از طریق رابط خط فرمان (Command Line) است.
نحوه مدیریت ساختار نرمافزاری با کمک کوبرنتیز چگونه است؟
فرآیند استقرار مبتنی بر کوبرنتیز، کلاستر نامیده میشود. ساختار کلاستر از دو بخش اصلی تشکیل شده که شامل صفحه کنترل و گرهها میشود. هر گره محیطی مبتنی بر لینوکس دارد و میتواند روی یک کامپیوتر فیزیکی یا مجازی اجرا شود. گرهها، پادها را اجرا میکنند. درون هر پاد نیز تعدادی کانتینر قرار دارد.
وظیفهٔ صفحه کنترل، نگهداشتن کلاستر در حالت بهینهٔ خود است. بهعنوان مثال، صفحه کنترل تصمیم میگیرد که اپلیکیشنهای در حال اجرا، از کدام کانتینر برای تداوم کارکرد خود بهره بگیرند. همچنین این صفحهٔ کنترل است که دستورات ادمین یا تیم DevOps را به گرهها، جایی که برنامهها در حال اجرا هستند، منتقل میکند.
این تفویض اختیارات، باعث میشود که شما از سطح بالاتری بر عملکرد کانتینرها نظارت داشته باشید. چرا که کوبرنتیز، خود تصمیم میگیرد که کدام گره در سطح کلاستر برای انجام یک وظیفه مناسب است و منابع سختافزاری و نرمافزاری لازم را برای عملکرد صحیح آن فراهم میکند.
کوبرنتیز چه ارتباطی با رایانش ابری دارد؟
مهمترین کاربرد کوبرنتیز، فراهم آوردن زیرساختی برای ابری کردن نرمافزارهای موجود و ارائهٔ آنها به صورت SaaS است. چنین نرمافزارهایی سازگار با ابر یا ابرزی (Cloud-native) گفته میشوند. الگوهای کوبرنتیز به طراحان این برنامهها کمک میکند تا آنها را کانتینرمحور بنویسند.
چرا رایانش ابری در کسبوکارهای امروزی اهمیت ویژهای دارد؟
برای اجرای کوبرنتیز به چه امکاناتی نیاز دارید؟
برای این که کوبرنتیز بتواند وظایف مربوط به استقرار نرمافزارهای شما را بهدرستی خودکار کند، به سرویسهای ابری دیگر نیاز دارید. استفاده از خدمات و پروژههای متنباز زیر، برای عملکرد بهینه کوبرنتیز مورد نیاز است:
- خودکارسازی با ابزارهایی مانند انسیبل (Ansible) برای نصب و مدیریت چرخه عمر کلاسترها
- رجیستری با استفاده از پروژههایی مثل Docker Registry
- ساخت شبکه با استفاده از پروژههایی مثل OpenvSwitch
- تمهیدات امنیتی با استفاده از پروژههایی مثل LDAP، SELinux، OAUTH و…
مزایای کوبرنتیز چیست؟
لیست زیر، مهمترین مزایای بهکارگیری کوبرنتیز را نشان میدهد:
- خودکار سازی و هماهنگ کردن عملکرد کانتینرها در پلتفرمهای مختلف
- کنترل و خودکار کردن فرآیند پیادهسازی نرمافزارها و بهروزرسانیهای آنها
- استفاده بهینه از سختافزارها با تخصیص منابع به اندازهٔ نیاز برای اجرای هر نرمافزار
- تضمین آمادهبهکار بودن اپلیکیشنهای مستقر شده
- امکان بازگردانی اپلیکیشنها به نسخه پیشین خود
- بررسی سلامت و بهبود خودکار برنامههای شما با جایگزینی، راهاندازی مجدد، بازتولید و مقیاس کردن خودکار
تفاوت کوبرنتیز با داکر چیست؟
نمیتوانیم داکر (Docker) و کوبرنتیز را مستقیماً مقایسه کنیم. داکر که با فاصله زمانی کوتاهی قبل از کوبرنتیز در سال ۲۰۱۳ بهصورت یک نرمافزار آزاد منتشر شد، مجموعهای از ابزارها برای ساخت و اجرای کانتینرها است. اما کوبرنتیز، همانطور که گفته شد، ابزاری است که برنامههای مبتنی بر کانتینر را که روی کلاستری از سرورها اجرا میشوند، مدیریت میکند. البته داکر قابلیتی به نام Swarm دارد که برای مدیریت کانتینرها روی چندین سرور استفاده میشوند، اما امکانات سادهتری نسبت به کوبرنتیز دارد.
از داکر میتوان بهعنوان نرمافزاری برای مدیریت و اجرای کانتینرهای داخل یک گره استفاده کرد. زمانی که کوبرنتیز یک پاد را برای انجام وظیفهای خاص به یک گره اختصاص میدهد، kubelet موجود در آن گره به داکر دستور میدهد تا کانتینر مختص آن وظیفه را بالا بیاورد. پس از اتمام کار، داکر آن کانتینر را میبندد. kubelet اطلاعات مربوط به وضعیت عملکرد کانتینر را از داکر میگیرد و به صفحه کنترل منتقل میکند.
نتیجهگیری
در این مقاله، با آنچه که باید در مورد کوبرنتیز بدانید آشنا شدید، از تاریخچه گرفته تا نحوه عملکرد و نیازمندیهای آن. استفاده از فناوریهایی مثل کوبرنتیز نیاز شما به نیروی انسانی و صرف هزینه هنگفت برای سپردن برخی امور ساده نرمافزاری به ادمین را از بین میبرد و خیال شما را از بابت خطای انسانی و از دسترس خارج شدن نرمافزارهایتان، راحت میکند.
منابع :
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes
این مقاله را به اشتراک بگذارید