kube32 项目通过将类 Kubernetes 功能移植到 ESP32-S3 微控制器上,实现了低功耗硬件上的分布式计算。虽然标准的 Kubernetes 是为高性能服务器设计的,但 kube32 将该架构适配到了资源受限的环境中。它提供了一整套 Kubernetes API 端点——包括 Pods、Nodes、Namespaces 和 Deployments——允许用户使用 `kubectl` 和 `k9s` 等标准工具来管理微控制器集群。该系统支持通过 Wi-Fi 或 USB 串口进行集群管理,有效地将单个电路板视为分布式网络中的节点。

kube32 项目徽标及 ESP32 微控制器描述
kube32 项目为 ESP32-S3 硬件提供 Kubernetes 兼容的控制平面和 WebAssembly 运行时。github.com

这张图片代表了为低功耗微控制器提供类 Kubernetes 功能的核心项目。

系统的核心是一个由 `wasm3` 解释器驱动的 WebAssembly (Wasm) 运行时。kube32 不使用传统的 Docker 容器,而是将 Wasm 模块作为“pods”执行。这种方法在保持极小占用空间的同时,实现了高度的可移植性和隔离性。该项目包含了 Rust、C 和 AssemblyScript 的 SDK 和模板,并实现了特定功能,如可配置的内存限制、按调用计费的 gas 预算以及能力防火墙。此防火墙限制外设访问,确保单个 pod 只能根据定义的权限与特定的硬件组件(如 GPIO 引脚、I2C 总线或 microSD 存储)进行交互。

该架构根据硬件能力区分控制平面和工作节点。配备 quad SPI PSRAM 的电路板充当控制平面,运行本地 kubelet 并提供 API 服务,而没有 PSRAM 的电路板则作为工作节点。系统还包括适用于 macOS 和 Linux 的主机模拟器 (`kube32-sim`),允许开发人员在没有物理硬件的情况下通过网络构建和部署 pods。为了实现持久化,kube32 在原始闪存或 microSD 卡上使用经过 CRC 检查的日志,支持 `persistentVolumeClaim` 对象,以确保数据在 pod 重启或系统重启后依然存在。