El proyecto kube32 permite la computación distribuida en hardware de bajo consumo al portar funcionalidades similares a Kubernetes a los microcontroladores ESP32-S3. Mientras que el Kubernetes estándar está diseñado para servidores de alto rendimiento, kube32 adapta la arquitectura para entornos con recursos limitados. Proporciona un conjunto completo de puntos de conexión de la API de Kubernetes —incluyendo Pods, Nodes, Namespaces y Deployments— permitiendo a los usuarios gestionar un clúster de microcontroladores utilizando herramientas estándar como `kubectl` y `k9s`. El sistema admite la gestión del clúster a través de conexiones Wi-Fi o seriales USB, tratando efectivamente a las placas individuales como nodos en una red distribuida.
Esta imagen representa el proyecto principal que proporciona funcionalidades similares a Kubernetes a microcontroladores de bajo consumo.
En el núcleo del sistema se encuentra un entorno de ejecución WebAssembly (Wasm) impulsado por el intérprete `wasm3`. En lugar de los contenedores Docker tradicionales, kube32 ejecuta módulos Wasm como 'pods'. Este enfoque permite una alta portabilidad y aislamiento manteniendo una huella de memoria pequeña. El proyecto incluye SDKs y plantillas para Rust, C y AssemblyScript, e implementa características específicas como límites de memoria configurables, presupuestos de gas por llamada y un firewall de capacidades. Este firewall restringe el acceso a los periféricos, asegurando que los pods individuales solo puedan interactuar con componentes de hardware específicos, como pines GPIO, buses I2C o almacenamiento microSD, basándose en permisos definidos.
La arquitectura distingue entre el plano de control y los nodos de trabajo en función de las capacidades del hardware. Una placa equipada con PSRAM quad SPI actúa como el plano de control, ejecutando el kubelet local y sirviendo la API, mientras que las placas sin PSRAM funcionan como trabajadores. El sistema también incluye un simulador de host (`kube32-sim`) para macOS y Linux, lo que permite a los desarrolladores construir y desplegar pods a través de una red sin hardware físico. Para la persistencia, kube32 utiliza un diario con verificación CRC en flash cruda o tarjetas microSD, admitiendo objetos `persistentVolumeClaim` para garantizar que los datos sobrevivan a los reinicios de los pods o a los reinicios del sistema.