鲲鹏/飞腾 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.arm64、images/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.py 的 NOTEBOOK_IMAGES(install/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」组合)。
七、部署落地顺序
- 按 x86 流程装好 Rancher / K8s 与 cube-studio;
- 替换
NOTEBOOK_IMAGES为 arm64 镜像,跑通开 Notebook; - 改过源码则重建前后端 arm64 镜像并替换;
- 用
build-job-encryption.sh补齐用到的任务模板 arm64 镜像; - 接入 GPU(NVIDIA 用 arm64 device-plugin,国产卡按厂商 arm64 插件);
- 逐项验证:Notebook → Pipeline 任务 → 训练 → 推理服务。