اجرای کوبرنتیز روی میکروکنترلرهای ESP32 با پروژه Kube32 — Show HN: I rebuilt Kubernetes for ESP32 microcontrollers
خلاصه
پروژه Kube32 یک کنترلپین سازگار با Kubernetes و محیط اجرای WebAssembly است که به توسعهدهندگان اجازه میدهد کلاسترهای لبه (Edge) را روی تراشههای کممصرف ESP32 راهاندازی کنند. این ابزار از ابزارهای استاندارد مانند kubectl و k9s پشتیبانی میکند.
معرفی پروژه Kube32 و اهداف آن
پروژه Kube32 یک کنترلپین سازگار با Kubernetes، عامل (Agent) مدل Kubelet و یک محیط اجرای WebAssembly است که بهطور اختصاصی برای میکروکنترلرهای خانواده ESP32-S3 توسعه یافته است. هدف این پروژه آوردن الگوهای رایانش ابری (Cloud-native) به دنیای دستگاههای لبه (Edge) و اینترنت اشیاء (IoT) است؛ بهطوریکه بتوانید با همان ابزارهای آشنای دنیای کلاود، میکروکنترلرها را مدیریت کنید.
معماری و نحوه کارکرد
این سیستم با زبان C++ نوشته شده و از موتور مفسر wasm3 برای اجرای کدهای WebAssembly به عنوان پادها استفاده میکند. یک تصویر فریمور واحد روی تمامی بردها اجرا میشود:
- نقش کنترلپین: بردهایی که دارای حافظه PSRAM هستند (مانند بردهای توسعه عمومی با حداقل ۲ مگابایت PSRAM) به عنوان کنترلپین عمل کرده و نسخه محلی Kubelet را اجرا میکنند.
- نقش کارگر (Worker): بردهای فاقد PSRAM به عنوان نودهای کارگر به کلاستر ملحق میشوند (مانند دستگاههای M5Stack Cardputer).
- ارتباط: شما میتوانید با ابزارهای استانداردی مثل kubectl و k9s از طریق Wi-Fi یا پورت سریال USB به مدیریت کلاستر خود بپردازید.
ویژگیهای کلیدی
- پشتیبانی وسیع از APIهای کوبرنتیز: شامل Pod، Node، Namespace، Service، Deployment، ConfigMap، Secret، Ingress و موارد دیگر.
- پادهای WebAssembly: پشتیبانی از زبانهای Rust، C و AssemblyScript با قابلیت تعیین محدودیتهای حافظه و بودجه Gas.
- مدیریت تجهیزات جانبی (Peripherals): فایروال قابلیت امنیتی برای دسترسی پادها به پینهای GPIO، مبدلهای ADC، باسهای I2C و UART، نمایشگر ST7789 و کارت حافظه microSD.
- مدیریت چرخه حیات: سیاستهای بازنشانی (Restart Policy) مانند
AlwaysوOnFailureهمراه با مکانیزم CrashLoopBackOff. - شبیهساز میزبان (Host Simulator): ابزار
kube32-simبه شما اجازه میدهد یک کلاستر چندنودی را روی سیستمعاملهای لینوکس و macOS شبیهسازی و تست کنید.
راهنمای سریع و استفاده
برای شروع کار با شبیهساز روی سیستم میزبان، میتوانید از دستورات زیر استفاده کنید:
cmake -S . -B build && cmake --build build -j8
./build/kube32-sim --ingress-port 8080 --pod-port 17000
سپس با تنظیم متغیر KUBECONFIG میتوانید مانیفستهای خود را اعمال کنید:
export KUBECONFIG=$PWD/build/kubeconfig
kubectl get nodes
kubectl apply -f examples/echo.yaml
برای فلش کردن روی سختافزار واقعی ESP32-S3 نیز از ابزار PlatformIO استفاده میشود:
pio run -e esp32s3
bash scripts/flash.sh <serial-port> 921600
چرا این پروژه در هکرنیوز مورد توجه قرار گرفت؟
سازنده پروژه در بحثهای هکرنیوز اشاره کرده است که ایده اصلی، پاسخ به این پرسش بوده که چگونه میتوان تفکر رایانش ابری را به فراتر از یک دستگاه منفرد و به حوزهی سیستمهای توزیعشدهی لبهی شبکه آورد. جامعه توسعهدهندگان از ترکیب کابرنتیز، WebAssembly و سختافزارهای ارزانقیمت اینترنت اشیاء استقبال کردهاند؛ چرا که راهحلهای خلاقانهای مانند همگامسازی لحظهای کلیدها با کیبورد دستگاه Cardputer را روی پادهای Wasm ممکن میسازد.
این پروژه تحت مجوز متنباز Apache-2.0 منتشر شده است.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل