跳到主要内容

ONES 镜像导入私有镜像仓

使用客户私有镜像仓部署 ONES 时,需要在 Helm 安装前,将目标版本和 Kubernetes 节点架构 对应的镜像导入私有镜像仓。

命令模板中的 <SYSTEM_ARCHITECTURE> 支持 amd64arm64<REGISTRY_BASE_PATH> 必须与 Helm 配置 dockerRegistryBasepathForOnesImage 保持一致。

为便于提供运维支持,需要使用标准化的镜像工作目录。统一保存镜像清单、同步脚本和离线包, 可以减少路径差异造成的误操作,也便于后续排障、校验和版本升级。开始操作前,创建并进入 镜像工作目录;本文后续下载或生成的镜像文件均保存在该目录:

mkdir -p ~/ones/images
cd ~/ones/images

REGISTRY_BASE_PATH 说明

REGISTRY_BASE_PATH 用于指定 ONES 镜像在目标镜像仓中的 URL 子路径,必须以 / 开头和 结尾。例如:

REGISTRY=registry.example.com
REGISTRY_BASE_PATH=/ones/

导入后的镜像路径效果如下:

img.ones.pro/release/ones-ai-k8s:v7.25.0
→ registry.example.com/ones/ones-ai-k8s:v7.25.0

该值必须与 Helm 配置中的 dockerRegistryBasepathForOnesImage 保持一致,否则 ONES 工作负载 会从错误的路径拉取镜像。

查看镜像清单

命令模板:

curl -fL \
"https://packages.ones.cn/release/<ONES_VERSION>/kubernetes/images/ones-images-<SYSTEM_ARCHITECTURE>.yaml" \
-o "ones-images-<SYSTEM_ARCHITECTURE>.yaml"

以 ONES v7.25.0 为例:

# amd64
curl -fL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/ones-images-amd64.yaml" \
-o "ones-images-amd64.yaml"

# arm64
curl -fL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/ones-images-arm64.yaml" \
-o "ones-images-arm64.yaml"

导入镜像

有以下两种方法,选择其中一种即可:

  • 方法一:使用 Docker 工具导入。
  • 方法二:使用 image-syncer 工具导入。

方法一:使用 Docker 工具导入

执行前确认:

  • 当前主机能够访问公网和客户私有镜像仓。
  • 已使用 docker login 登录客户私有镜像仓。

同步 ONES 主体镜像:

命令模板:

curl -sfL \
"https://packages.ones.cn/release/<ONES_VERSION>/kubernetes/images/sync-ones-images-<SYSTEM_ARCHITECTURE>.sh" | \
REGISTRY="<REGISTRY>" REGISTRY_BASE_PATH="<REGISTRY_BASE_PATH>" bash

以 ONES v7.25.0 和目标仓库 registry.example.com/ones/ 为例,根据 Kubernetes 节点架构, 在 AMD64 和 ARM64 命令中选择一种执行。

AMD64:

curl -sfL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/sync-ones-images-amd64.sh" | \
REGISTRY="registry.example.com" REGISTRY_BASE_PATH="/ones/" bash

ARM64:

curl -sfL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/sync-ones-images-arm64.sh" | \
REGISTRY="registry.example.com" REGISTRY_BASE_PATH="/ones/" bash

脚本会将镜像同步到指定的目标镜像仓及 URL 子路径。

方法二:使用 image-syncer 工具导入

下载 ONES 预制离线镜像包后,使用包内基于 image-syncer 的脚本导入客户镜像仓。

下载离线包

下载 ONES 主体镜像包:

命令模板:

# 下载镜像包
curl -fLO \
"https://packages.ones.cn/release/<ONES_VERSION>/kubernetes/images/ones-<ONES_VERSION>-images-linux-<SYSTEM_ARCHITECTURE>.tar"

# 下载校验信息
curl -fLO \
"https://packages.ones.cn/release/<ONES_VERSION>/kubernetes/images/ones-<ONES_VERSION>-images-linux-<SYSTEM_ARCHITECTURE>.tar.sha256"

# 校验镜像包
sha256sum -c "ones-<ONES_VERSION>-images-linux-<SYSTEM_ARCHITECTURE>.tar.sha256"

以 ONES v7.25.0 为例,根据 Kubernetes 节点架构,在 AMD64 和 ARM64 命令中选择一种执行。

AMD64:

# 下载镜像包
curl -fLO \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/ones-v7.25.0-images-linux-amd64.tar"

# 下载校验信息
curl -fLO \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/ones-v7.25.0-images-linux-amd64.tar.sha256"

# 校验镜像包
sha256sum -c "ones-v7.25.0-images-linux-amd64.tar.sha256"

ARM64:

# 下载镜像包
curl -fLO \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/ones-v7.25.0-images-linux-arm64.tar"

# 下载校验信息
curl -fLO \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/ones-v7.25.0-images-linux-arm64.tar.sha256"

# 校验镜像包
sha256sum -c "ones-v7.25.0-images-linux-arm64.tar.sha256"

导入客户镜像仓库

解开 ONES 主体镜像包:

命令模板:

tar -xf ones-<ONES_VERSION>-images-linux-<SYSTEM_ARCHITECTURE>.tar
cd ones-<ONES_VERSION>-images-linux-<SYSTEM_ARCHITECTURE>

以 ONES v7.25.0 为例,根据 Kubernetes 节点架构选择一种执行。

AMD64:

tar -xf ones-v7.25.0-images-linux-amd64.tar
cd ones-v7.25.0-images-linux-amd64

ARM64:

tar -xf ones-v7.25.0-images-linux-arm64.tar
cd ones-v7.25.0-images-linux-arm64

执行包内的导入脚本:

命令模板:

REGISTRY="<REGISTRY>" \
REGISTRY_BASE_PATH="<REGISTRY_BASE_PATH>" \
REGISTRY_USER="<私有镜像仓库用户名>" \
REGISTRY_PASSWORD="<私有镜像仓库密码或 Token>" \
bash import-images.sh

以目标仓库 registry.example.com/ones/ 为例:

REGISTRY="registry.example.com" \
REGISTRY_BASE_PATH="/ones/" \
REGISTRY_USER="<私有镜像仓库用户名>" \
REGISTRY_PASSWORD="<私有镜像仓库密码或 Token>" \
bash import-images.sh

目标仓库不需要认证时,可以省略用户名和密码。脚本默认按未启用 TLS 的镜像仓处理;目标 镜像仓启用 TLS 时,增加 REGISTRY_INSECURE=false

镜像全部导入目标镜像仓后,才能执行 Helm 安装。

附加说明

使用内置 MySQL

使用内置 MySQL 时,还需要获取并同步内置 MySQL 镜像。

获取镜像清单,命令模板:

curl -fL \
"https://packages.ones.cn/release/<ONES_VERSION>/kubernetes/images/mysql-images-<SYSTEM_ARCHITECTURE>.yaml" \
-o "mysql-images-<SYSTEM_ARCHITECTURE>.yaml"

以 ONES v7.25.0、AMD64 架构为例:

curl -fL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/mysql-images-amd64.yaml" \
-o "mysql-images-amd64.yaml"

以 ONES v7.25.0、ARM64 架构为例:

curl -fL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/mysql-images-arm64.yaml" \
-o "mysql-images-arm64.yaml"

在线同步镜像,命令模板:

curl -sfL \
"https://packages.ones.cn/release/<ONES_VERSION>/kubernetes/images/sync-mysql-images-<SYSTEM_ARCHITECTURE>.sh" | \
REGISTRY="<REGISTRY>" REGISTRY_BASE_PATH="<REGISTRY_BASE_PATH>" bash

以 ONES v7.25.0、AMD64 架构和目标仓库 registry.example.com/ones/ 为例:

curl -sfL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/sync-mysql-images-amd64.sh" | \
REGISTRY="registry.example.com" REGISTRY_BASE_PATH="/ones/" bash

以 ONES v7.25.0、ARM64 架构和目标仓库 registry.example.com/ones/ 为例:

curl -sfL \
"https://packages.ones.cn/release/v7.25.0/kubernetes/images/sync-mysql-images-arm64.sh" | \
REGISTRY="registry.example.com" REGISTRY_BASE_PATH="/ones/" bash