شرایطی را تصور کنید که در آن قصد استفاده از امکانات کوبرنتیز و یا یادگیری آن را دارید اما نمیخواهید درگیر پیچیدگیهای پیادهسازی یک کلاستر پیچیده در سطح Production شوید. در این شرایط چکار میکنید؟ جواب این پرسش، ابزار Minikube است.
Minikube به شما امکان ایجاد کوبرنتیز محلی (Local) روی سیستمعاملهای مختلف را میدهد. در نتیجه بدون درگیری با پیچیدگیهای پیادهسازی کوبرنتیز، شما میتوانید روی کامپیوتر خودتان از تمام تواناییهای آن بهره گرفته و دیپلویمنتهای آن را تست کنید.
در این مطلب از وبلاگ همروش قصد داریم شما را با چیستی Minikube و همچنین نحوه استفاده از آن آشنا کنیم. در نتیجه اگر یک فرد تازهکار هستید که قصد یادگیری کوبرنتیز را دارید، مطمئنا این مطلب مفید خواهد بود.
مینیکیوب چیست؟
Minikube یک ابزار رایگان و اوپن سورس است که به توسعهدهندگان اجازه میدهد بهراحتی یک کلاستر Kubernetes تکنود (Single-Node) را روی رایانه شخصی خود (چه بر روی ویندوز، مک یا لینوکس) اجرا کنند. هدف از Minikube فراهم کردن یک محیط آسان برای یادگیری Kubernetes یا توسعه و تست برنامههای کاربردی مبتنی بر ساختار کانتینر است. با استفاده از Minikube، توسعهدهندگان میتوانند بدون نیاز به دسترسی به کلاسترهای بزرگ و پیچیده، از ویژگیها و امکانات Kubernetes استفاده کنند.
ویژگیهای کلیدی Minikube
- راهاندازی سریع: با یک دستور ساده، میتوانید یک کلاستر Kubernetes کامل را راهاندازی کنید.
- پشتیبانی از افزونهها: Minikube از افزونههای مختلفی پشتیبانی میکند که امکان اضافه کردن ویژگیهای جدید به کلاستر را فراهم میآورد.
- مدیریت منابع: مینیکیوب امکان تنظیم منابع مانند CPU و حافظه را برای شبیهسازی شرایط مختلف محیطی فراهم میآورد.
- پشتیبانی از درایورهای مختلف: Minikube از درایورهای مختلفی برای اجرا شدن روی ماشین مجازی یا به صورت مستقیم روی سیستم عامل میزبان پشتیبانی میکند.
- تجربهی کاربری ساده: با هدف سادهسازی فرآیند یادگیری و استفاده از کوبرنتیز، Minikube تجربه کاربری سادهای را ارائه میدهد.
تفاوت Kubernetes و Minikube چیست؟
Kubernetes و Minikube هر دو ابزارهایی هستند که در زمینه مدیریت و اجرای برنامههای کاربردی در محیطهای کانتینری استفاده میشوند، اما کاربردها و قابلیتهای متفاوتی دارند.
کوبرنتیز ابزاری است که در محیط تولید مورد استفاده قرار میگیرد و مناسب برای پروژههای بزرگی است که سطح پیچیدگی نسبتا بالایی دارند و در نهایت در یک محیط واقعی اجرا میشوند.
این در حالیست که Minikube بیشتر برای تست و یادگیری کوبرنتیز استفاده شده و به دلیل اهداف و ساختاری که دارد برای محیط تولید مناسب نیست. جدای از آن به نسبت کوبرنتیز از محدودیتهایی برخوردار بوده و در نتیجه عمدتا برای افراد تازهکار که قصد ورود به دنیای کوبرنتیز را دارند مناسب است.
بنابراین، تفاوت اصلی بین Kubernetes و Minikube در مقیاسپذیری، پیچیدگی و کاربرد آنها نهفته است. Kubernetes برای محیطهای تولید در مقیاس بزرگ طراحی شده، در حالی که Minikube بیشتر به عنوان یک ابزار توسعه محلی برای تست و یادگیری کار با Kubernetes استفاده میشود.
در جدول زیر نیز میتوانید بهصورت کلی تفاوتهای میان کوبرنتیز و مینیکیوب را مشاهده کنید:
Minikube | Kubernetes | |
اندازه کلاستر | Single-Node | Multi-Node |
منابع موردنیاز | کم | زیاد |
پیچیدگی | پیکربندی ساده | پیکربندی پیچیده |
مناسب برای | تیمهای بسیار کوچک | تیمهای متوسط و پروژههای بزرگ و سازمانی |
مقیاسپذیری | محدود | گسترده |
مدیریت کلاستر | مدیریت ساده | نیازمند فرایندهای پیچیده مدیریتی |
شبکهسازی | پیکربندیهای ساده برای شبکهسازی | پیکربندیهای پیچیده برای شبکهسازی |
ذخیرهسازی | محلی و محدود | رویکردهای گسترده Storage |
چگونه Minikube را نصب کنیم؟
براساس اینکه از چه سیستمعاملی استفاده میکنید، روشهای مختلفی برای نصب Minikube وجود دارد که در ادامه آنها را بررسی خواهیم کرد.
نصب Minikube روی اوبونتو
برای نصب مینیکیوب روی اوبونتو سرراستترین حالت، دانلود آخرین نسخه آن و نصب از طریق ترمینال است. برای اینکار کافیست دستورات زیر را وارد کنید:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
البته بعضی از توزیعها امکان نصب Minikube را مستقیما از طریق پکیج منیجر فراهم کردهاند که میتوانید آن را نیز امتحان کنید.
نصب Minikube روی ویندوز
راحتترین روش برای نصب ویندوز استفاده از فایل installer آن است. اما اگر قصد دارید از طریق PowerShell فرایند نصب را انجام دهید میتوانید بهصورت زیر عمل کنید:
New - Item - Path 'c:\' -Name '
minikube ' -ItemType Directory -Force
Invoke - WebRequest - OutFile 'c:\minikube\minikube.exe' - Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' - UseBasicParsing
نصب Minikube روی مک
برای نصب Minikube روی مک میتوانید از طریق Homebrew عمل کنید:
brew install minikube
چگونه از Minikube استفاده کنیم؟
بعد از نصب Minikube حال میتوانید با استفاده از دستور start فرایند کار کردن با Minikube را شروع کنید:
minikube start
برای تعامل با کلاسترتان در محیط Minikube میتوانید از دستورات kubectl استفاده کنید. برای این کار میتوانید از قالب دستوری زیر استفاده کنید:
minikube kubectl cluster-info
یک روش دیگر برای انجام این کار ورود به نود مینیکیوب با استفاده از SSH و وارد کردن دستورات Kubectl بهصورت مستقیم است.
داشبورد Minikube
مانند بیشتر توزیعهای مبتنی بر کوبرنتیز، Minikube نیز از یک داشبورد Web-Based پشتیبانی میکند. البته این ویژگی بهصورت پیشفرض فعال نیست. برای فعال کردن آن میتوانید دستور زیر را وارد کنید:
minikube dashboard
بعد از اجرا کردن این دستور، صفحه داشبورد روی مرورگر پیشفرض شما ظاهر خواهد شد.
مدیریت Ingress و پیادهسازی multi-node در Minikube
بهصورت پیشفرض، Minikube از Ingress Controller پشتیبانی نمیکند. از آنجایی که Minikube بیشتر برای آموزش مفاهیم مقدماتی دنیای کوبرنتیز استفاده میشود، کار با Ingress عمدتا چندان ضروری در نظر گرفته نمیشود. برای مثال شما در Minikube حتی بدون استفاده از Ingress میتوانید کارهایی مانند ایجاد پادها را انجام دهید.
با این حال، اگر قصد دارید که شیوه کار پروژهها در دنیای واقعی را درک کنید، نیاز است که شیوه کاری Ingress را مشاهده کرده و حتی با آن کار کنید. خوشبختانه Minikube این امکان را از طریق افزونه ingress
ایجاد کرده است. برای فعال کردن آن کافیست دستور زیر را وارد کنید:
minikube addons enable ingress
Multi-Node در Minikube
همانطور که در طول مقاله به آن اشاره کردیم، مینیکیوب بهصورت Single-Node عمل میکند. اما این موضوع با استفاده از یک رویکرد ساده قابل حل است. برای اجرا مینیکیوب بهصورت Multi-Node تنها کاری که باید انجام دهید استفاده از فلگ -nodes
در دستور start است. برای مثال در دستور زیر ما یک کلاستر جدید را با دو نود ایجاد میکنیم:
minikube start --nodes 2 -p multinode-demo
ویژگیهای کاربردی Minikube
Minikube جدای از ویژگیهای اصلی که دارد، با یکسری ویژگی حرفهای و کاربردی ارائه شده که در مواقع و سناریوهای مختلف میتوان از آنها استفاده کرد.
- افزونه: Minikube با قابلیت افزونهپذیری این امکان را به کاربران میدهد که در صورت نیاز به یک ویژگی جدید، با استفاده از افزونهها و Add-Onها، این امکانات را به افزونه مورد نظرشان اضافه کنند. در مثالهای قبلی ما داشبورد مینیکیوب را مشاهده کردیم که در واقع یک افزونه مینیکیوب به حساب میآید. لیستی از این Add-onها و همچنین راهنمای استفاده از آنها را در این لینک میتوانید مشاهده کنید.
- پیکربندی: یکی از نکات کلیدی کار با Minikube درک ساختارهای پیکربندی آن است. در واقع مینیکیوب به شما این قدرت را میدهد تا تنظیمات مختلفی را پیکربندی کرده و مانند یک حرفهای روی کلاستر خود کار کنید. تخصیص منابع، سفارشیسازی Networking، بهینهسازی فرایند اجرایی کلاستر و… از جمله امکاناتیست که در زمینه پیکربندی میتوانید روی آنها کار کنید.
- مدیریت پروفایل: مدیریت پروفایل یا Profile Management راهکاریست برای مدیریت محیطهای توسعه مختلف. با استفاده از این قابلیت شما میتوانید محیطهای توسعه مختلفی را ایجاد کنید و همچنین بین آنها سوئیچ کنید. زمانی که بهطور همزمان روی چندین پروژه کار میکنید و یا درگیر یک پروژه تیمی هستید، این قابلیت واقعا مفید است.
جایگزینهای Minikube
Minikube تنها روشی نیست که با استفاده از آن میتوانید یک نسخه سبک از کوبرنتیز را پیادهسازی کرده و برای پروژههای کوچک از آن استفاده کنید! ابزارهای دیگری نیز در این زمینه وجود داشته که میتوانید از آنها برای مقاصد نسبتا مشابه استفاده کنید. MicroK8s ،K3s و Kind سه مورد از این ابزارها هستند. در جدول زیر یک مقایسه کلی بین این موارد خواهیم داشت.
Minikube | MicroK8s | K3s | Kind | |
پشتیبانی از کوبرنتیز؟ | بله | بله | بله | بله |
پشتیبانی از Multi-Node | به صورت پیشفرض خیر، اما امکانش وجود دارد. | بله | بله | بله |
تیم پشتیبانی و توسعه | Kubernetes | Canonical | Rancher | Kubernetes SIGs |
در پایان
برای افراد مبتدی و کسانی که میخواهند یک کلاستر کوبرنتیز را به صورت محلی روی سیستمعاملشان نصب کنند، Minikube میتواند بهترین ابزار ممکن باشد. در این مطلب از وبلاگ همروش ما با چیستی Minikube، امکانات و چگونگی کار با آن آشنا شدیم.
همچنین اگر قصد یادگیری بیشتر راجع به Minikube را دارید میتوانید از مستندات آن استفاده کنید.