Background
The current worker sandbox relies on gVisor (runsc) for container-level isolation. This works well for typical agent tasks, but for users who need heavier computation — GPU workloads, long-running builds, or full OS-level isolation — gVisor's syscall interception overhead becomes a bottleneck and the isolation boundary is insufficient.
Proposal
Add support for microVM-backed worker pods (e.g. Firecracker or Cloud Hypervisor) as an alternative runtimeClassName alongside the existing gVisor option.
# values.yaml
worker:
runtimeClassName: "kata-fc" # Kata Containers + Firecracker
Why microVMs
| Property |
gVisor |
microVM (Firecracker) |
| Isolation boundary |
Syscall filter (host kernel shared) |
Full VM kernel (hardware-level) |
| Boot time |
~ms |
~125ms (Firecracker) |
| Memory overhead |
Low |
~5MB per VM |
| Compute overhead |
Moderate (syscall interception) |
Near-native |
| GPU passthrough |
Not supported |
Supported via vfio |
Use cases
- Agent tasks that require native kernel features (eBPF, FUSE, kernel modules)
- Compute-intensive workloads where gVisor syscall overhead is measurable
- Stricter multi-tenant isolation requirements where a shared host kernel is unacceptable
- GPU-accelerated inference or training inside the worker environment
Implementation notes
- Kata Containers provides a drop-in
RuntimeClass that works with existing K8s pod specs
- No changes to worker image required — Kata wraps the existing OCI image in a VM
- The
runtimeClassName field in charts/lobu/values.yaml (worker.runtimeClassName) already exists; this would add documentation and tested values for microVM runtimes
- Node pool with bare-metal or nested-virt support required (e.g. GKE Bare Metal, AWS i3.metal, Hetzner dedicated)
Background
The current worker sandbox relies on gVisor (
runsc) for container-level isolation. This works well for typical agent tasks, but for users who need heavier computation — GPU workloads, long-running builds, or full OS-level isolation — gVisor's syscall interception overhead becomes a bottleneck and the isolation boundary is insufficient.Proposal
Add support for microVM-backed worker pods (e.g. Firecracker or Cloud Hypervisor) as an alternative
runtimeClassNamealongside the existing gVisor option.Why microVMs
Use cases
Implementation notes
RuntimeClassthat works with existing K8s pod specsruntimeClassNamefield incharts/lobu/values.yaml(worker.runtimeClassName) already exists; this would add documentation and tested values for microVM runtimes