kube32プロジェクトは、Kubernetesのような機能をESP32-S3マイクロコントローラに移植することで、低消費電力ハードウェア上での分散コンピューティングを可能にします。標準的なKubernetesは高性能サーバー向けに設計されていますが、kube32はそのアーキテクチャをリソース制約のある環境に適応させています。このシステムは、Pods、Nodes、Namespaces、Deploymentsを含む完全なKubernetes APIエンドポイントを提供し、ユーザーは`kubectl`や`k9s`といった標準的なツールを使用してマイクロコントローラのクラスターを管理できるようになります。システムはWi-FiまたはUSBシリアル接続を介したクラスター管理をサポートしており、個々のボードを分散ネットワーク内のノードとして効果的に扱うことができます。
この画像は、低消費電力マイクロコントローラにKubernetesのような機能を提供するコアプロジェクトを表しています。
システムの核となるのは、`wasm3`インタプリタによって駆動されるWebAssembly(Wasm)ランタイムです。従来のDockerコンテナの代わりに、kube32はWasmモジュールを「pods」として実行します。このアプローチにより、小さなフットプリントを維持しながら高い移植性と隔離性を実現します。プロジェクトにはRust、C、AssemblyScript用のSDKとテンプレートが含まれており、構成可能なメモリ制限、コールごとのガス予算、およびキャパビリティファイアウォールなどの特定の機能を実装しています。このファイアウォールは周辺機器へのアクセスを制御し、個々のpodが定義された権限に基づいて、GPIOピン、I2Cバス、またはmicroSDストレージなどの特定のハードウェアコンポーネントとだけやり取りできるようにします。
このアーキテクチャは、ハードウェアの能力に基づいてコントロールプレーンとワーカーノードを区別します。Quad SPI PSRAMを搭載したボードはコントロールプレーンとして機能し、ローカルのkubeletを実行してAPIを提供し、PSRAMのないボードはワーカーとして機能します。また、システムにはmacOSおよびLinux用のホストシミュレータ(`kube32-sim`)が含まれており、開発者は物理的なハードウェアなしでネットワークを介してpodを構築およびデプロイできます。永続性のために、kube32は生のフラッシュまたはmicroSDカード上のCRCチェック付きジャーナルを使用し、`persistentVolumeClaim`オブジェクトをサポートすることで、podの再起動やリブート時にもデータが生存することを保証します。