ONES 升级操作说明
本文将引导您完成单机版 ONES 升级过程;
如果按照ONES 集群安装说明部署,也可以参考本文升级ONES 集群。
操作步骤
- 升级前准备
- 升级操作
- 升级后操作
1.升级准备
1.1 升级前准备
在开始升级之前,参考ONES 升级前检查第1章 进行检查;再获取当前ONES版本号。
1.2 查看可升级版本
通过以下命令选择一个可用的版本号,或联系ONES工程师确认目标版本号。
# 列出所有可用版本
curl https://packages.ones.cn/release/ones-versions.yaml
1.3 准备在线服务器下载升级包
- 如果运行 ONES 的服务器是离线的,需要找一台在线的服务器来制作差量包。然后将差量包拷贝到离线服务器上进行升级。
- 如果运行 ONES 的服务器是在线的,可以直接在运行 ONES 的服务器上进行升级。也可以提前准备一台在线服务器来制作差量包。然后将差量包拷贝到运行 ONES 的服务器上进行升级。
根据1.1获取的当前版本号和1.2获取的目标版本号来制作差量包,假定你当前的版本号是 v3.14.32、目标版本号是 v3.15.25,相关命令如下:
#root账号登录服务器
sudo su -
#创建临时目录
mkdir -p /data/upgrade/
#下载升级包
curl https://packages.ones.cn/release/v3.15.25/build_offline_pkg_linux_amd64.sh | sudo SRC_ONES_VERSION=v3.14.32 IMAGE_REGISTRY_PORT=5001 bash -
#如果上述命令报错 FATAL:pip3 not found, please install pip3 or build soft link to pip3 from pip-3.x
#则是缺失pip组件,需要先安装,ubuntu上手工执行命令: apt install -y python3-pip
等待10-20分钟(取决于网络带宽),直到看到以下输出,表示下载成功。

1.4 获取当前ONES数据目录
执行如下命令查找当前环境ONES数据目录的实际路径,在2.3节使用
kubectl -n ones-installer describe deploy installer-api | grep Path:
示例输出
Path: /data/ones/ones-installer-pkg/pkg
Path: /data/ones/ones-installer-pkg/config
Path: /data/ones/ones-installer-pkg/backups
如果输出结果有 /data/ones/ones-installer-pkg,则 ONES_DATA_DIR=/data/ones
如果输出结果有 /home/ones/ones-installer-pkg,则 ONES_DATA_DIR=/home/ones
2 升级操作
2.1 备份配置文件
升级前,请先执行备份文件的配置。
#进入容器后,根据版本选择如下1种备份方式即可
ones-ai-k8s.sh
#新版本采用命令备份
make backup-config
#退出容器
exit
#FAQ:老版本如果上述命令执行报错,请手工备份如下操作代替make backup-config命令
filename=`date +"%Y%m%d-%H%M%S-$(date +%s.%6N)"`
mkdir -p config/backups/time-$filename
cp config/*.yaml config/backups/time-$filename/
2.2 备份业务数据
升级前,执行数据备份任务;如果是外置数据库,请联系客户自行备份。
ones-ai-k8s.sh
# 手动全量备份
make mysql-base-backup NAMESPACE=ones
# 如果没有开启备份任务,该命令执行会报错;测试环境请联系客户确认后可继续,正式环境请先开启备份功能
# 如果该命令执行没有报错,则查看备份日志
make logs-mysql-xbackup NAMESPACE=ones
# 看到"备份成功"日志,表示MySQL备份完成。
exit
上述备份操作不影响业务,可提前完成;下述操作将影响配置和服务,请在变更窗口内执行!
2.3 导入新镜像
执行如下命令导入新版本的镜像。注意:该操作会更新public.yaml中的版本号,执行该命令后请勿执行与升级无关的make操作。
cd /data/upgrade/
# 请根据1.4节查询到的环境实际路径替换ONES_DATA_DIR !!!
OFFLINE_PKG=offline_pkg_v3.14.29_from_v3.14.28.tar ONES_DATA_DIR=/data/ones bash install_linux_amd64.sh
# 升级到6.105.0以下版本需更新部署工具;升级到6.105.0及以上版本无需执行该步骤
ones-ai-k8s.sh
make setup-installer-api
# 上述命令执行之后,installer-api 这个pod可能会销毁重建,故须退出当前会话,等待 60s 后重新进入ones-ai-k8s.sh
exit
sleep 60
2.4 初始化新配置
ones-ai-k8s.sh
make setup-ones-cluster-operator
make setup-tidb-operator
make init-config
make init-db
# 如果是集群环境,请核对如下参数
grep -i onesSystemScale config/private.yaml
onesSystemScale: 'self-hosting-single'
# 如果该参数为 self-hosting-single,请修改为 common-ha
2.5 执行数据迁移
从低于6.88.0的版本,升级到6.88.0以上版本,必须先停服、再执行数据迁移
kubectl -n ones scale --replicas=0 deploy project-api-deployment wiki-api-deployment ones-project-api-deployment
请根据命令输出的日志继续完成升级动作,区分有迁移和无迁移两种流程
make start-migration MIGRATION_DIR=config/migration