鲲鹏/飞腾 ARM64 部署与多架构镜像构建

在鲲鹏/飞腾等 ARM64 信创服务器上部署 CubeStudio,需要构建/替换 arm64 镜像时阅读

部署安装 / GPU与异构算力
ARM64aarch64鲲鹏Kunpeng飞腾Phytium信创多架构镜像docker buildxmanifestubuntu-portsNOTEBOOK_IMAGES任务模板镜像build-job-encryptionarm64 部署k8s-device-plugin

鲲鹏/飞腾 ARM64 部署与多架构镜像构建

CubeStudio 支持部署到 ARM64(aarch64)信创服务器(鲲鹏、飞腾等)。K8s 底座与平台部署流程与 x86 相同,差别集中在镜像层——部分镜像需 arm64 版本。本篇聚焦 arm64 部署要点与多架构镜像构建;通用适配流程见 国产GPU与ARM64适配总览

一、整体思路

  • 底座一致:Rancher / K8s / cube-studio 部署流程与 x86 相同,先按 x86 走通。
  • 镜像分架构:部署后部分功能可能异常,因部分镜像无 arm64 版本,需替换。按处理程度分四类:
镜像类别 ARM64 现状 处理
第三方基础组件 当前版本已适配 arm64 一般无需处理
平台前后端 改过源码时需自建 arm64 机器 docker build
notebook 有 arm64 版(vscode/jupyter) NOTEBOOK_IMAGES-arm64
任务模板镜像 部分才有 无 arm64 版的自行 buildx

二、多架构镜像构建(buildx / manifest)

docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder
docker buildx inspect --bootstrap
docker buildx build --platform=linux/arm64,linux/amd64 --push \
  --tag <仓库>/project-name:latest -f ./project-name/Dockerfile .

已分架构单独构建的镜像(xxx-amd64 / xxx-arm64)可用 manifest 合并成同名多架构 tag(GPU 基础镜像构建脚本即预留此类命令):

docker manifest create <仓库>/img:tag <仓库>/img:tag-amd64 <仓库>/img:tag-arm64
docker manifest push <仓库>/img:tag

三、平台前后端镜像

后端 install/docker/Dockerfile 未使用 ARG TARGETARCH(见 Dockerfile 顶部),在 arm64 机器上直接 docker build 即按本机架构构建 arm64 镜像,无需传架构参数:

docker build --network=host -t <仓库>/cube-studio/kubeflow-dashboard:arm64 -f install/docker/Dockerfile .
docker build --network=host -t <仓库>/cube-studio/kubeflow-dashboard-frontend:arm64 -f install/docker/dockerFrontend/Dockerfile .

单机同出双架构可用 Dockerfile 顶部注释的 buildx 命令(--platform linux/amd64,linux/arm64 ... --push)。

apt 源差异:arm64 需用 ubuntu-ports 源,x86 用标准 ubuntu 源。仓库 images/sources.list-ubuntu20.04.arm64images/sources.list-ubuntu22.04.arm64 已备好,内容形如:

deb https://mirrors.aliyun.com/ubuntu-ports/ xenial main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main restricted universe multiverse

自写 arm64 Dockerfile 时注意换用 ports 源,否则系统包装不上。

四、notebook 镜像(改 NOTEBOOK_IMAGES)

arm64 版 notebook 目前支持 vscode 与 jupyter。将 config.pyNOTEBOOK_IMAGESinstall/docker/config.py:951)替换为带 -arm64 后缀镜像:

NOTEBOOK_IMAGES = [
    ['ccr.ccs.tencentyun.com/cube-studio/notebook-enterprise:vscode-ubuntu-cpu-conda-arm64', 'vscode-conda(cpu)'],
    ['ccr.ccs.tencentyun.com/cube-studio/notebook-enterprise:vscode-ubuntu-gpu-conda-arm64', 'vscode-conda(gpu)'],
    ['ccr.ccs.tencentyun.com/cube-studio/notebook-enterprise:jupyter-ubuntu-cpu-conda-arm64', 'jupyter-conda(cpu)'],
    ['ccr.ccs.tencentyun.com/cube-studio/notebook-enterprise:jupyter-ubuntu-gpu-conda-arm64', 'jupyter-conda(gpu)'],
]

默认 NOTEBOOK_IMAGES 为 amd64 / 日期标签镜像,arm64 机器上须替换。

五、任务模板镜像

仅部分模板自带 amd64 版本;无 arm64 版本的模板需在 arm64 机器上重建。统一构建脚本 job-template/build-job-encryption.sh 内部用 docker buildx build --platform linux/amd64,linux/arm64 ... --push 一次构建双架构镜像;也可参照该脚本对单个模板手动 buildx。

六、ARM64 上使用 NVIDIA 卡

k8s-device-plugin 需 arm64 版,可用 install/kubernetes/gpu/Dockerfile-arm64 构建。国产 NPU/GPU 按厂商 arm64 插件与镜像接入(国产卡常见「鲲鹏+昇腾」「飞腾+国产 GPU」组合)。

七、部署落地顺序

  1. 按 x86 流程装好 Rancher / K8s 与 cube-studio;
  2. 替换 NOTEBOOK_IMAGES 为 arm64 镜像,跑通开 Notebook;
  3. 改过源码则重建前后端 arm64 镜像并替换;
  4. build-job-encryption.sh 补齐用到的任务模板 arm64 镜像;
  5. 接入 GPU(NVIDIA 用 arm64 device-plugin,国产卡按厂商 arm64 插件);
  6. 逐项验证:Notebook → Pipeline 任务 → 训练 → 推理服务。
最后更新 2026-08-24完整文档以官方仓库为准:GitHub Wiki