Skip to content

2026.11.12 Release v0.8.0 ​

本次发布包含 8 个重大特性,以及多项功能增强与 Bug 修复。共 128 个 PR,来自 46 位贡献者。

⭐ 亮点 ​

  • 新增JuiceFS COW存储后端(preview):基于JuiceFS支持模板跨节点共享、沙箱暂停后跨机恢复及从快照跨机启动。
  • 新增FS-only快照能力:支持仅对沙箱文件系统进行快照,降低存储成本。
  • 新增沙箱重启策略:当沙箱内服务崩溃时,支持自动重启沙箱。
  • 调度插件系统:支持通过CEL、外部调度插件来自定义沙箱在集群中的调度策略。
  • E2B SDK兼容性进一步增强:支持E2B 2.51.0及以上版本。详情见 E2B API Compatibility and Differences | CubeSandbox
  • 沙箱指标与日志采集:支持在Prometheus、Grafana中查看各项指标。

🎯 核心特性 ​

可扩展的调度插件系统 & 调度质量评估框架 ​

  • 支持通过内置插件、CEL表达式以及外部gRPC插件来自定义沙箱调度策略,能更加灵活、动态的调整集群的调度行为。
  • 新增调度质量评估框架,通过模拟集群拓扑、负载,支持在开发阶段快速衡量某种调度策略的装箱率、碎片、羊群度、调度延迟等指标。

JuiceFS COW存储后端支持 ​

  • 基于JuiceFS支持模板跨节点共享、沙箱暂停后跨机恢复及从快照跨机启动。支持 Redis、MySQL、TiKV 等多种元数据引擎,以及 MinIO、腾讯云 COS 等对象存储。(#2085)

支持仅对沙箱的文件系统进行快照 ​

  • 支持仅对沙箱的文件系统进行快照,降低快照存储成本。用户可以通过FS-only的快照,冷启动新的沙箱。(#2145)

沙箱内服务崩溃时,支持配置自动重启沙箱 ​

  • 支持设置沙箱的重启策略,当沙箱内的服务故障时,可以自动在同节点上重启沙箱。

支持沙箱之间通过端口映射互访 ​

  • 沙箱之间可以通过其母机端口映射相互访问,基于 TCP 协议的服务都可以通过这种方式实现,不局限于 CubeProxy 的 HTTP/HTTPS/gRPC
  • 同母机沙箱通过 hairpin 的方式也支持这种方式通信方式
  • 一个沙箱访问另一个沙箱,除了可以通过CubeProxy的HTTP/GRPC方式之外,还可以通过Port-Mapping方式,一种TCP四层通信,支持任何基于TCP的应用,这两种方式都支持同node或跨node的沙箱间访问。

Volume框架增强:支持传递用户私有数据 ​

  • Volume框架支持传递用户私有数据,可用于支持鉴权,分桶等业务逻辑。(#2136)

沙箱和集群可观测能力提升 ​

  • 采集沙箱资源指标及日志,也可以支持扩展更多可视化工具,提供默认看板配置,可灵活对接用户已有的监控、日志运维系统,如Prometheus、Grafana等。为生产化提供统一的可观测,支持运行监测与问题排查手段。(#2183)

✨ 功能增强 ​

调度和资源管理 ​

  • 新增模板级沙箱 QoS能力:可以设置特定模板创建的沙箱的网络带宽、网络包速率、磁盘吞吐、IOPS上限,避免单个沙箱吃掉宿主机全部资源、影响同机其他沙箱。 (#1174)
  • 节点超卖配置设置:支持CLI和Web两种方式设置节点超卖配置,新增节点侧常驻进程ops-agent,承接CubeOps下发的配置指令并修改Cubelet配置文件 (#1870)
  • 优化沙箱创建耗时:解决在AMD等厂商的CPU上,由于沙箱资源采集机制读取cgroup,导致沙箱并发创建耗时升高的问题。(#2073)

SDK及E2B兼容性 ​

  • 新增支持E2B的/v2/sandboxes和/v2/sandboxes/{id}/connect两个接口。使用E2B SDK 2.51.0及以上版本的用户,可以直接创建和连接沙箱,不必再做适配层。(#1800)
  • Python/Node/Go SDK新增E2B兼容的Sandbox.fork接口。 (#1649)
  • 支持按照快照ID/名称删除快照的能力。(#1987)
  • 支持在创建/查询/列表/连接和fork的沙箱响应中查看模版别名。(#2062)
  • 支持按照快照名称/ID过滤快照列表。(#2151)
  • Python/Node/Go SDK新增Sandbox.is_running的SDK能力。(#2159)

模板与存储 ​

  • 制品分发并发数可配置:用户可根据网络带宽&集群规模来调整CubeMaster 向各节点推送 rootfs 制品的并发数 (#1973)
  • 优化快照链,同一节点的派生快照共用一个父快照;使用共享内存优化写流程;增加使用快照时的自动预热功能;同时收紧了重启、热升级和 checkpoint 恢复时的校验。 (#1996)
  • cubemastercli tpl delete 新增 --force 选项:支持清理卡住或处于异常构建状态的模板删除任务,强制删除模板元数据及模板在各节点上的制品副本。(#2038)
  • 支持通过SDK/API创建模版时指定存储后端 (#2039)
  • 模板支持指定运行用户:建模板时可以指定沙箱以哪个用户(UID或用户名)来运行。 (#2072)
  • 优化 ext4 镜像的存储和下载. (#1885)

生命周期和控制面 ​

  • vsock连接管理优化 (#1925)
  • 优化沙箱详情查询接口,减少查询开销。 (#2092)

网络 ​

  • DNS 解析流程迁移至控制面,简化数据面实现(#1640)
  • 沙箱可直接使用k8s集群 DNS (#1741)
  • CubeVS 可观测性增强,支持导出每沙箱网络指标(#1889)
  • CubeProxy 支持 E2b-Sandbox-* 头部转发请求(#1952)
  • CubeEgress 七层规则支持 "*" 全匹配(#2001)

Runtime ​

  • vsock 吞吐提升 60%+:启用 VIRTIO_RING_F_EVENT_IDX 后省掉了 guest 不需要时的多余中断,双向吞吐从约 5.7 Gbps 提升到约 9.3 Gbps。(#1862)
  • 通过减少不必要的 ioctl 数量, 小幅加速在 arm 沙箱快照的恢复 (#1865)
  • arm/x86 的 guest kernel 日志输出将会统一重定向到 virtio-console 以降低冷启动开销 (#1992);

部署与升级 ​

  • k8s部署下,支持私有 CA 镜像仓库:Helm 里配置 trustedCACerts 即可正常拉镜像。(#1995)
  • 控制面原生支持 Redis Cluster
  • 计算节点组件启动提速(#2058)

Web UI / CubeOps ​

  • WebUI模板页新增快照列表Tab. (#1968)
  • WebUI 补齐模板别名和后端存储显示. (#2006)
  • cubeopscli 支持可跨级的异构节点分组展示。 (#2174)

🐛 Bug 修复 ​

SDK ​

  • 修复 SDK files.read 解析错误的问题。(#1571)
  • sdk 支持http请求的超时时间。(#2052)
  • 修复 cubecli 终端显示问题。(#2057)
  • 兼容E2B SDK用state、metadata参数过滤沙箱列表。 (#2181)
  • 在创建模板后获取envd版本,优化模板创建速度。(#1803)

生命周期与沙箱 ​

  • 模版制作时沙箱健康状态二次检查 (#1541)
  • 修复沙箱日志过多导致沙箱panic。(#1779)
  • 修复已退出的沙箱被误报为运行中的问题. (#1814)
  • 修复查看快照列表limit默认值与文档不符的问题. (#1832)
  • 集中修复了虚拟磁盘、网络、内存热插拔、vsock、串口等虚拟设备在处理异常输入时的问题,也修复了快照恢复中的一些边界问题 (#1873)
  • 修复卷激活与删除并发时 panic 毒化 name_index 锁导致后续卷操作失败的问题。(#1981)
  • 修复grpc连接池并发关闭引发的偶发 panic. (#1990)
  • 修复删除沙箱后查询详情返回500而非404的问题。(#1988)
  • virtiofsd 的 getxattr 改为通过 /proc/self/fd 读取 xattr,不再重新打开文件,避免 s3fs 上多出的 open/close 抵消 O_TRUNC、导致文件长度错误。(#2002)
  • 在 ARM64 上启动 guest 时,如果误用了 ELF 格式的 vmlinux 内核,现在会直接报错,并指出需要的是 arch/arm64/boot/Image (#2032)
  • 修复连接沙箱时已退出的沙箱被误报连接成功的问题. (#2033)
  • 解决沙箱创建失败时shim泄漏问题。(#2040)
  • 解决偶现的创建沙箱失败问题。(#2054)
  • 修复 Cubelet 对沙箱暂停/恢复后 guest_workload 指标周期重置的处理逻辑,避免旧周期缓存导致监控数据中断。(#2155)
  • 修复具有多个CLM实例的情况下,auto-pause功能失灵的问题. (#2157)

网络与安全 ​

  • 修复 K8s 非 host-network 模式部署脚本中 CubeProxy 误用 Pod IP(#1921、#2115)
  • Cubelet 启动流程异步挂载 TAP 钩子/清理残留 TAP,优化启动速度(#1993)
  • CubeVS 转发流程优化,统一沙箱访问本机服务处理路径(#2007)
  • CubeEgress 网络服务脚本优化,支持不同版本 iproute2(#2034)
  • 安全加固:不再强制关闭容器的 no_new_privs。 (#2061)
  • CubeEgress 支持转发 WebSocket upgrade 头部(#2128)
  • CubeEgress 审计日志支持打印沙箱 ID(#2131)

模板与存储 ​

  • 修复cubes3lvol崩溃恢复时的底层断言失败:删除没做完的子快照前先把父子关系登记好,崩溃恢复不再触发 SPDK 断言崩溃。(#2124)

部署与升级 ​

  • 自动轮转CubeShim、CubeVMM日志。
  • pvm-host 移除了 kmem_cache 机制,并让 pvm-host 始终使用稳定的 TSC 时钟源以支持pvm-guest 时间同步。(#1955)
  • pvm-host 在自主构建时会对所有模块签名以避免某些ubuntu系统reboot之后会卡在 initramfs 救援 shell;
  • One-click 部署 CoreDNS 支持响应 AAAA 解析请求(#2075)

Web UI / CubeOps ​

  • 修复AgentHub创建沙箱时未指定模板导致创建失败的问题 (#1334)
  • 修复沙箱列表翻页不生效的问题.(#1830)
  • 修复cubeopscli出错时无任何提示的问题. (#2135)

其它 ​

  • 修复健康检查返回错误的沙箱数量的问题. (#2030)

📚 Documentation ​

  • 完善 CubeSandbox & E2B 兼容性文档
  • 添加nightly质量状态页面
  • 基于 oc9 内核 (6.6.119-53.6) 更新 v0.7.3 在 Intel 8255C 裸金属上的 cube-bench 数据;(#2084)
  • 新增排查指南, 当计算节点时钟比控制节点慢 15 秒以上时,节点会被误判为心跳过期而不能调度 (#2084) (#2087)
  • 新增离线部署文档。
  • 文档补充存活探针示例. (#2185)