Skip to content

运维与排障

CubeSandbox 是一套多组件系统。学习运维时,不要先背所有服务名;先建立“从用户现象反推组件”的思路。

WebUI 是第一入口

默认访问:

text
http://<控制节点 IP>:12088

最常用页面:

页面用途
Overview看集群健康、运行中沙箱、CPU/内存压力。
Sandboxes管理沙箱,查看状态、日志、暂停、恢复、销毁。
Templates查看模板状态、构建进度、节点分布。
Nodes检查每台节点的资源和健康状态。
Versions查看组件版本矩阵,定位混部或升级不一致。
Template Store安装官方预置模板。

学习阶段建议每次跑 SDK 示例时都打开 Sandboxes 页面,这会让生命周期变化更直观。

端口速查

端口组件说明
3000CubeAPISDK / REST API 入口。
12088WebUI浏览器控制台。
80/443CubeProxy / CubeEgress 相关取决于部署和域名配置。
9999Cubelet gRPC控制节点到计算节点的生命周期操作。

实际端口可能被 .env 或部署脚本覆盖,生产环境以安装目录配置为准。

日志从哪里看

问题优先查看
API 请求失败CubeAPI 日志、CubeMaster 日志。
创建沙箱卡住CubeMaster、Cubelet、CubeShim、containerd。
模板构建失败模板 job、CubeMaster templatecenter、Cubelet artifact。
自动暂停/恢复异常/data/log/cube-proxy/sidecar.log
出网被拒或注入异常/data/log/cube-egress/access.jsonl
网络策略不生效network-agent 日志、CubeVS map dump。
WebUI 无数据WebUI 请求、CubeAPI /cubeapi/v1、鉴权配置。

相关服务管理见 服务管理与日志

定位问题的顺序

1. 先判断是控制面还是节点面

现象更可能在哪里
API 返回 401/403鉴权或 API 网关。
API 返回调度失败CubeMaster、节点资源、模板状态。
沙箱创建后无法执行Cubelet、CubeShim、VMM、沙箱内服务。
访问沙箱 HTTP 服务失败CubeProxy、域名、端口暴露、TLS。
出网失败CubeVS、CubeEgress、DNS、网络策略。

2. 再看资源和状态

  • 节点是否 Ready。
  • 模板是否 READY。
  • /data/cubelet 是否还有空间。
  • 版本矩阵是否一致。
  • 沙箱是否 running、paused 或 terminated。

3. 最后看具体日志

先用 WebUI 缩小范围,再进入宿主机看日志。不要一开始就在所有日志里全文搜索。

常用健康检查

bash
# API
curl -s http://127.0.0.1:3000/health || true

# 端口监听
ss -lntp | grep -E '3000|12088|9999' || true

# 文件系统
df -h /data/cubelet
findmnt /data/cubelet

# KVM
ls -la /dev/kvm
lsmod | grep kvm

升级与版本矩阵

CubeSandbox 由多个组件共同工作,升级时要避免“控制面已经升级、节点仍是旧组件”的混合状态。WebUI 的 Versions 页面可以帮助你观察:

  • CubeAPI、CubeMaster、Cubelet 版本是否一致。
  • network-agent、CubeShim、CubeEgress 是否与发布包匹配。
  • guest 镜像或模板是否需要重建。

学习源码时可能会看到比当前文档更新的版本常量或测试数据,这是正常的。部署环境应以 Release 包和 changelog 为准。

常见问题入口

问题类型文档
部署失败、服务拉不起来部署相关排障
模板创建失败、模板不可用模板相关排障
局域网网段冲突本地网络 CIDR 冲突
Host Mount 权限Host Mount 权限排障
WebUI 使用WebUI 控制台
日志与服务服务管理与日志

下一步

继续阅读 场景与集成,通过示例项目把基础能力组合起来。

微信公众号《有机系统》作者整理的个人学习笔记与教程。