openFuyao技术讲堂 | SandboxSched沙箱调度引擎
SandboxSched沙箱调度引擎:为AI Agent提供秒级获取的隔离运行环境。
特性介绍
AI Agent正在从“单轮对话”走向“多步自主执行”--它需要反复运行代码、执行命令、读取文件,每一步都需要一个安全隔离、可秒级获取、用完即弃的运行环境。传统容器方案虽然能隔离,但创建时延、资源开销和生命周期管理都难以满足Agent高并发、高频创建的场景需求;而microVM(micro Virtual Machine,微型虚拟机)方案虽轻量,却缺少与Kubernetes调度体系的原生集成。 为此,openFuyao社区推出了SandboxSched沙箱调度引擎。它作为OpenSandbox的fluxruntime后端,面向AI Agent工作负载提供低时延、高吞吐的沙箱生命周期管理能力,让Agent的每一次“动手”都有隔离环境即时可用。 SandboxSched不直接暴露API,以OpenSandbox为使用入口。用户使用OpenSandbox SDK创建沙箱,由OpenSandbox Server通过gRPC(一种高性能远程过程调用框架)转发给SandboxSched完成调度与生命周期管理,整体调用链路为:
用户(SDK/REST API)→ OpenSandbox Server(flux runtime)→ FluxSandbox Controller → Scheduler → Agent Pod → 沙箱运行时沙箱运行时支持两种模式:E2B运行时(默认),沙箱为microVM实例,支持暂停/恢复/快照等高级能力,秒级启动;containerd运行时,沙箱为节点containerd上的裸容器,适用于标准Kubernetes集群,不支持快照能力。
亮点特征
- 秒级获取:E2B运行时基于模板创建,秒级启动;预热缓冲机制让沙箱“随取即用”。
- 环境模板化克隆:对运行中的沙箱创建快照,基于快照快速创建新沙箱,实现环境复用与故障回退(仅E2B运行时)。
- 资源超分:requests/limits分离配置,CPU超分后单节点部署密度提升至约3.7倍。
- 统一资源管控:沙箱资源规格由SandboxGroup CRD统一声明,避免调用方自定义。
应用场景
SandboxSched适用于需要在Kubernetes集群中为AI Agent提供隔离运行环境的场景,具体包括:
- AI Agent运行环境:提供可秒级获取、按需回收的隔离运行沙箱,承载Agent的命令执行、代码运行等任务。
- 大规模沙箱池:通过SandboxGroup声明容量与资源规格,系统自动维持预热缓冲,应对高并发创建请求。
- 统一资源管控:沙箱资源规格由SandboxGroup统一声明,避免调用方自定义。
- 环境保存与复用:对运行中的沙箱创建快照,基于快照快速创建新沙箱,实现环境模板化克隆与故障回退(仅E2B运行时)。
- 快照预热:将快照主动分发缓存到多个超节点,加速从快照创建沙箱(仅E2B运行时)。
实现原理
整体架构:
用户通过 SDK 创建沙箱时,OpenSandbox Server 根据请求中的 extensions.sandboxGroup 字段路由到对应的 SandboxGroup,经 FluxSandbox Controller 转发给所属调度器分片,调度器从该组的 Agent Pod 中选择一个创建沙箱实例。SandboxGroup 的容量字段(缓冲、单 Pod 沙箱上限等)驱动 Agent Pod 的自动扩缩,sandboxResources 决定每个沙箱占用的资源规格。
运行时执行链路:
- E2B 运行时:调度器在创建前根据
image(模板名)向 E2B Template Manager 解析模板元数据,再由节点上的 E2B Sandbox Runtime 拉起 microVM 沙箱。 - containerd 运行时:Agent 直接通过节点 containerd 创建裸容器并注入 execd。
关键机制:
- 沙箱组分片:Controller 将 SandboxGroup 自动拆分为 SubSandboxGroup 分片,分配给各调度器实例,实现横向扩展与负载均衡。例如
agentPodMax: 200、maxSandboxesPerPod: 5时,系统自动拆分为 2 个分片,最大容量 1000 个沙箱。 - 资源超分:requests 作为节点调度账本占位,小于 limits 时节点可容纳更多 Agent Pod。实测参考:同一节点申请 48 个 Agent Pod,不超分仅 13 个可调度,CPU 1:4 超分后 48 个全部调度,部署密度约 3.7 倍。
- 快照预热:预热子系统内嵌于 Controller 进程,通过 HTTP 接口(默认
:8080,API 前缀/api/v1)将快照分发缓存到超节点,任务异步执行,失败超节点自动重试 3 次。
安装部署及使用
SandboxSched的部署分为两部分:先部署OpenSandbox Server(沙箱使用入口),再部署SandboxSched四个组件(controller、scheduler、watcher、agent)。E2B运行时还需要在Worker节点部署E2B Sandbox Runtime与Orchestrator、在管控面部署E2B Template Manager,containerd运行时则仅需标准containerd。两者均通过Helm Chart一键安装,支持在线与离线场景。详情请参考SandboxSched沙箱调度引擎-安装。
部署并创建SandboxGroup后,即可通过OpenSandbox SDK创建沙箱、执行命令、管理快照,完整使用流程(含SDK安装、沙箱创建/删除、快照管理、快照预热等),详细使用请参见SandboxSched沙箱调度引擎-使用前准备。
未来展望
SandboxSched在v26.09已搭建起“声明式容量管理 + 双运行时 + 分片调度 + 快照与预热”的完整骨架。openFuyao社区将沿四个方向继续演进。
- 极速调度:持续打磨声明式架构,将并发吞吐提升至5000沙箱/秒以上,验证20超节点拉起3万沙箱的大规模批量创建能力,性能全面领先。
- 智慧调度:在资源超分基础上引入跨节点内存借用与集群级负载均衡重调度,告别节点热点与资源浪费,让算力利用率最大化。
- 开放生态:一套调度器无缝兼容 E2B、Kata、agentENV、CubeSandbox 多运行时与主流 SDK,一次接入,随处运行。
- 生产就绪:补齐可观测、持久化存储、网络安全、故障自愈等生产级能力,从“能用”走向“敢用”。
资源参考
了解更多SandboxSched项目信息,请访问openFuyao社区-SandboxSched。 如需体验openFuyao v26.09部署,请前往openFuyao下载中心获取安装包。
本文由openFuyao社区首发,欢迎遵照CC-BY-SA 4.0协议规定转载。
