阿里云部署腾讯Cube sandbox-1
2026/7/12 18:58:51 网站建设 项目流程

官方指南:

快速开始 | Cube Sandbox

环境

Ubuntu 26.04 64位 至少是2核8G,不然检查不通过

AI

因为这是安装腾讯的CubeSandbox,所以使用https://yuanbao.tencent.com/ 知道的更多些

也同时使用千问-阿里 AI 助手

XFS

Ubuntu 默认使用 ext4 文件系统

在 Ubuntu 中使用 XFS,是指将 Ubuntu 系统的磁盘分区格式化为 XFS 文件系统。XFS 是一种高性能的 64 位日志文件系统,最初由 SGI 开发,后来被移植到 Linux 内核中,目前所有版本的 Ubuntu 均对其提供完全支持

腾讯Cube sandbox是基于XFS,XFS 专为处理大规模数据和高吞吐量工作负载而设计,在处理大型文件和高并发 I/O 时性能表现优异。

申请云盘

系统盘是不能改文件系统的,所以要申请单独的一个云盘

每次重装系统要重新挂载

初始查看

1. 使用lsblk命令(推荐)
在终端中输入lsblk,可以清晰地查看系统中所有的块存储设备及其挂载关系。新购买的云盘通常会显示为一个新的设备名(例如vdb),且其MOUNTPOINTS(挂载点)一栏暂时为空。

2. 使用df -h命令
输入df -h可以查看已挂载的文件系统及其容量、使用情况。如果您已经完成了格式化和挂载操作,新云盘会出现在列表中;如果尚未挂载,则不会显示。

lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 74M 1 loop /snap/core22/2411 loop1 7:1 0 171.1M 1 loop /snap/microk8s/8978 loop2 7:2 0 171.1M 1 loop /snap/microk8s/9072 loop3 7:3 0 49.3M 1 loop /snap/snapd/26865 loop4 7:4 0 50.1M 1 loop /snap/snapd/27406 loop5 7:5 0 66.8M 1 loop /snap/core24/1643 loop6 7:6 0 148.2M 1 loop /snap/docker/3505 sr0 11:0 1 1024M 0 rom vda 253:0 0 70G 0 disk ├─vda1 253:1 0 1M 0 part ├─vda2 253:2 0 200M 0 part /boot/efi └─vda3 253:3 0 69.8G 0 part / vdb 253:16 0 40G 0 disk

分析结果:

  • 系统盘vda(70G),包含您的系统分区。
  • 新云盘vdb(40G),目前状态为disk,且MOUNTPOINTS为空,说明它尚未分区、格式化和挂载

接下来,您可以按照以下完整步骤,将这块 40G 的新云盘格式化为XFS文件系统并挂载使用:

第一步:对新云盘进行分区

推荐使用parted工具,创建 GPT 分区表并划分一个主分区:

sudo parted /dev/vdb --script mklabel gpt mkpart primary 1MiB 100%

(注:如果您的系统没有parted命令,也可以使用fdisk /dev/vdb,然后依次输入np、回车、回车、w来创建分区)

第二步:刷新分区表

让系统识别刚创建的分区:

sudo partprobe /dev/vdb

第三步:格式化为 XFS 文件系统----------

顺便清除以前数据

参考https://github.com/TencentCloud/CubeSandbox/issues/311

将新创建的分区(vdb1)格式化为 XFS:

sudo mkfs.xfs -f /dev/vdb1

第四步:创建挂载点并挂载

假设您想将这块盘挂载到/mnt/data目录:-->应该是/data/cubelet,不然一会就得卸载

sudo mkdir -p /data/cubelet sudo mount /dev/vdb1 /data/cubelet

检查一下保证data/cubelet为空

第五步:配置开机自动挂载(非常重要)

自动

执行以下两行语句

echo "/dev/vdb1 /data/cubelet xfs defaults 0 0" | sudo tee -a /etc/fstab sudo mount -a
手动-可以跳过

为了防止重启后云盘掉线,建议通过 UUID 写入/etc/fstab文件中:

  1. 获取 UUID:

    sudo blkid /dev/vdb1

    获得类似如下

/dev/vdb1: UUID="cbe" BLOCK_SIZE="512" TYPE="xfs" PARTLABEL="primary" PARTUUID="0416c685-b9740f86231a"

可以执行 sudo vim /etc/fstab

想粘贴的话

复制好后,点击shift+右键

第六步:验证

您可以再次运行lsblkdf -h,确认/dev/vdb1已经成功挂载到/data/cubelet目录下。

xfs_info /data/cubelet | grep reflink

root@izwz995ntdz:~#xfs_info /data/cubelet | grep reflink
= reflink=1 bigtime=1 inobtcount=1 nrext64=1
root@izwz99kdj07ayo2p6q5ntdz:~#df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 5.0M 1.5G 1% /run
/dev/vda3 69G 5.9G 60G 9% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
efivarfs 256K 7.4K 244K 3% /sys/firmware/efi/efivars
none 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
tmpfs 3.8G 0 3.8G 0% /tmp
none 1.0M 0 1.0M 0% /run/credentials/systemd-resolved.service
/dev/vda2 197M 6.3M 191M 4% /boot/efi
none 1.0M 0 1.0M 0% /run/credentials/systemd-networkd.service
none 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service
tmpfs 7.5G 12K 7.5G 1% /var/snap/microk8s/common/var/lib/kubelet/pods/57c7dc75-2f8b-4907-81eb-341a8f470d9f/volumes/kubernetes.io~projected/kube-api-access-vkv88
tmpfs 769M 8.0K 769M 1% /run/user/0
/dev/vdb1 40G 816M 40G 2% /data/cubelet

可以重启系统后验证还在不在

重启命令reboot

安装 PVM 内核

切换到root

sudo su root

因为是unbutu所以参考 DEB 系(Ubuntu、Debian)安装方法

下载

idakaReleases · CubeSandbox/CubeSandbox

找到linux-image-*opencloudos9.cubesandbox.pvm.host*_amd64.deb

这是右键复制的链接

不要下载带dpg这个调试包

https://cnb.cool/CubeSandbox/CubeSandbox/-/releases/download/v0.5.0/linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2-dbg_6.6.69-gb85200d80fa2-1_amd64.deb

执行以下两个命令

# 将下面的 URL 替换为你从 Releases 页面右键复制的实际下载链接 wget "https://cnb.cool/CubeSandbox/CubeSandbox/-/releases/download/v0.5.0/linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2_6.6.69-gb85200d80fa2-1_amd64.deb" dpkg -i linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2_6.6.69-gb85200d80fa2-1_amd64.deb

安装完成后会有done


root@iZwz99k5ntdZ:~# dpkg -i linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2_6.6.69-gb85200d80fa2-1_amd64.deb
Selecting previously unselected package linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2.
(Reading database… 94469 files and directories currently installed.)
Preparing to unpack linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2_6.6.69-gb85200d80fa2-1_amd64.deb…
Unpacking linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2 (6.6.69-gb85200d80fa2-1)…
Setting up linux-image-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2 (6.6.69-gb85200d80fa2-1)…
dracut: Generating /boot/initrd.img-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2
kdump-tools: Generating /var/lib/kdump/initrd.img-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-7.0.0-22-generic
Found initrd image: /boot/initrd.img-7.0.0-22-generic
Found linux image: /boot/vmlinuz-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2
Found initrd image: /boot/initrd.img-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

设置 PVM 内核为默认启动项:

# 查看已安装的内核列表,确认 PVM 内核版本字符串 ls /boot/vmlinuz-*

我看到的是

/boot/vmlinuz-6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2/boot/vmlinuz-7.0.0-22-generic

用红色字体代替下文中PVM_KVER=“” 双引号中的内容

设置默认启动项为 PVM Host 内核

PVM_KVER="6.6.69-opencloudos9.cubesandbox.pvm.host-gb85200d80fa2" sed -i "s|^GRUB_DEFAULT=.*|GRUB_DEFAULT=\"Advanced options for Ubuntu>Ubuntu, with Linux ${PVM_KVER}\"|" /etc/default/grub update-grub

配置内核启动参数:

curl -sL https://cnb.cool/CubeSandbox/CubeSandbox/-/git/raw/master/deploy/pvm/grub/host_grub_config.sh | bash

重启并验证

reboot

确认当前内核

确认已进入 PVM 内核并加载 KVM 模块:

# 确认当前使用内核版本 uname -r # 期望输出包含:opencloudos9.cubesandbox.pvm.host 加载 PVM KVM 模块 modprobe kvm_pvm 确认模块已加载 lsmod | grep kvm 期望输出中包含 kvm_pvm

设置开机自动加载kvm_pvm模块:

echo 'kvm_pvm' > /etc/modules-load.d/kvm-pvm.conf

安装或检查Docker服务

不能用snap命令安装

确保有docker.service

systemctl list-units | grep -i docker

systemctl list-units | grep -i docker
sys-devices-virtual-net-docker0.device loaded active plugged /sys/devices/virtual/net/docker0
sys-subsystem-net-devices-docker0.device loaded active plugged /sys/subsystem/net/devices/docker0
docker.serviceloaded activerunning Docker Application Container Engine
docker.socketloaded activerunning Docker Socket for the API

已经存在

docker.service loaded active running
docker.socket loaded active running

安装docker(视需要)

如果没有docker可以安装

CubeSandbox one-click只保证兼容官方 apt/yum 安装的docker.service,Snap 版会持续遇到这类坑。

# 2. 装官方 Docker(Ubuntu/Debian 示例) apt-get update apt-get install -y ca-certificates curl gnupg lsb-release mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ > /etc/apt/sources.list.d/docker.list apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io # 3. 确认 systemctl enable --now docker systemctl status docker --no-pager docker ps

Docker 在本次会话中跳过镜像签名验证*****

export DOCKER_CONTENT_TRUST=0

创建目录和用户组

一会要装mysql和redis,先建好目录

mkdir -p /data/mysql /data/redis

创建用户组,给容器cube-egress使用,不然会一直重启

sudo groupadd -g 8049 cube-egress

安装CubeSandBox

curl -sL https://cnb.cool/CubeSandbox/CubeSandbox/-/git/raw/master/deploy/one-click/online-install.sh | CUBE_PVM_ENABLE=1 MIRROR=cn bash

root@iZw:~# curl -sL https://cnb.cool/CubeSandbox/CubeSandbox/-/git/raw/master/deploy/one-click/online-install.sh | CUBE_PVM_ENABLE=1 MIRROR=cn bash
[online-install] Running pre-download preflight checks...
[online-install] glibc version 2.43 OK (>= 2.31)
[online-install] PVM host detected (kvm_pvm loaded) and CUBE_PVM_ENABLE=1 -- proceeding with PVM guest kernel.
[online-install] Pre-download preflight checks passed.
[online-install] MIRROR=cn, fetching latest release info from https://download.cubesandbox.com/release/latest.json...
[online-install] CN mirror latest asset: https://cnb.cool/CubeSandbox/CubeSandbox/-/releases/download/v0.5.0/cube-sandbox-one-click-v0.5.0-amd64.tar.gz
[online-install] downloading cube-sandbox-one-click-v0.5.0-amd64.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 82 100 82 0 0 1280 0 0
36233.2M36 84.76M 0 0 1.20M 0 03:13 01:10 02:03 1.19M

服务器要下载233.2M内容,得等待10分钟

七个小矮人

重启成功后有7个docker 容器

控制台登录

当然先要设置安全组

然后

http://你的ip:12088/

账号密码都是admin

--------------------------------------------恭喜 完成-------------------------------------------------------------------

报错

connection refused

MySQL / Redis 根本没启动

CubeMaster 依赖 MySQL(3306) 做 DB 迁移,MySQL 没起来就会立即退

root@izwz99kdj075ntdz:~# cubemastercli tpl create-from-image \
--image cube-sandbox-cn.tencentcloudcr.com/cube-sandbox/sandbox-code:latest \
--writable-layer-size 1G \
--expose-port 49999 \
--expose-port 49983 \
--probe 49999
cubemastercli run fail: Post "http://0.0.0.0:8089/cube/template/from-image": dial tcp 0.0.0.0:8089: connect: connection refused

这个报错很明确:cubemastercli要连本机 8089 端口(CubeMaster 控制面),但没有任何进程在监听,说明 CubeMaster / cube-api 相关 systemd 服务没起来或还在启动中

# CubeMaster 启停日志
journalctl -u cube-sandbox-cubemaster.service -n 100 --no-pager

# cube-api
journalctl -u cube-sandbox-cube-api.service -n 100 --no-pager

# MySQL/Redis(最常见——DB 没起来导致 CM 起不来)
journalctl -u cube-sandbox-mysql.service -n 50 --no-pager

所有docker容器都没启动

curl -sL https://cnb.cool/CubeSandbox/CubeSandbox/-/git/raw/master/deploy/one-click/online-install.sh | CUBE_PVM_ENABLE=1 MIRROR=cn bash 后docker没有启动起来

Docker 的“内容信任”(Content Trust)功能与 CubeSandbox 镜像不兼容导致的。我们可以通过临时关闭这个功能来解决。

export DOCKER_CONTENT_TRUST=0

cube-egress没有启动

查看日志

journalctl -u cube-sandbox-cube-egress.service -n 50 --no-pager

日志中出现

cube-egress-prepare.sh[178838]: install: invalid group: '8049'

cube-egress服务在启动时需要生成 CA 证书,并尝试将生成的证书文件分配给 GID 为8049的用户组。但是,您当前的系统中不存在 GID 为8049的用户组,导致install命令执行失败,服务不断崩溃重启。

这通常是因为 CubeSandbox 的某些组件(如cube-lifecycle-manager)在 Docker 容器内运行时使用了特定的 GID,而宿主机上没有预先创建对应的组。

创建 GID 为 8049 的用户组

sudo groupadd -g 8049 cube-egress

重启cube-egress服务

sudo systemctl restart cube-sandbox-cube-egress.service

附加说明

不能用snap安装docker

因为CubeSandbox one-click 的cube-sandbox-mysql.service / redis.service里写死了:

Requires=docker.service
After=docker.service

查询 systemctl list-units | grep -i docker

snap.docker.dockerd.service ← 有
docker.service ← 没有❗

移除方法

# 1. 停并卸 Snap Docker systemctl stop snap.docker.dockerd.service snap remove docker # 2. 装官方 Docker(Ubuntu/Debian 示例) apt-get update apt-get install -y ca-certificates curl gnupg lsb-release mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ > /etc/apt/sources.list.d/docker.list apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io # 3. 确认 systemctl enable --now docker systemctl status docker --no-pager docker ps

安装完docker后

systemctl list-units | grep -i docker
sys-devices-virtual-net-docker0.device loaded active plugged /sys/devices/virtual/net/docker0
sys-subsystem-net-devices-docker0.device loaded active plugged /sys/subsystem/net/devices/docker0
docker.service loaded active running Docker Application Container Engine
docker.socket loaded active running Docker Socket for the API

已经存在

docker.service loaded active running
docker.socket loaded active running

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询