Skip to main content
Version: v3&v6

ONES 在线/离线升级

升级准备

在开始升级之前,需要做一些如下准备工作

查看可升级版本

应该选择一个可用的版本号。可以通过以下命令

# 列出所有可用版本
curl https://packages.ones.cn/release/ones-versions.yaml

展示结果如下:

➜ curl https://packages.ones.cn/release/ones-versions.yaml
onesVersions:
- version: v3.14.100
releaseDate: "2020-01-23"
changeLog: ""
remark: ""
- version: v3.14.101
releaseDate: "2024-01-19"
changeLog: ""
remark: ""

配置检查

失败警告!!!

当选定的 ONES 升级版本号大于等于 v3.14.129v6.0.55 这两个版本时,需要确保 fluentOverlay 的值为 common,当小于上述两个版本时,确保 fluentOverlay 的值为 only-ones-logging

相关命令:

进入操作机

ones-ai-k8s.sh

查看当前环境 fluentOverlay 的配置值

make get_value KEY=fluentOverlay

根据要求调整 fluentOverlay 的值

vi default/private.yaml # 如果 fluentOverlay 配置存在则修改该配置,如果不存在就新增一个 fluentOverlay=xxx 的配置

备份你的数据

备份方法请参考 备份与恢复

准备在线服务器

  • 如果运行 ONES 的服务器是离线的,需要找一台在线的服务器来制作差量包。然后将差量包拷贝到离线服务器上进行升级。
  • 如果运行 ONES 的服务器是在线的,可以直接在运行 ONES 的服务器上进行升级。也可以提前准备一台在线服务器来制作差量包。然后将差量包拷贝到运行 ONES 的服务器上进行升级。

在线服务器

假定你当前的版本号是 v3.14.32 选择一个大于你当前ONES 版本的版本号 。比如: v3.15.25

制作差量包

curl https://packages.ones.cn/release/v3.15.25/build_offline_pkg_linux_amd64.sh | sudo SRC_ONES_VERSION=v3.14.32  bash - 

ONES 服务器

升级制品

获取当前ONES数据目录

执行如下命令查找当前ONES数据目录

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

执行升级制品命令

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

修改默认配置

修改k3s pod实例限制

vim /etc/systemd/system/k3s.service
# 在ExecStart的最后一行添加 '--kubelet-arg=max-pods=150' \
# 完整示例如下:
ExecStart=/usr/bin/k3s \
server \
'--config=/data/ones/ones-installer-pkg/k3s/v1.29.1+k3s2/config/config.server.yaml' \
'--service-node-port-range=30000-32767' \
'--system-default-registry=localhost:5000' \
'--cluster-init=false' \
'--kubelet-arg=max-pods=150' \

重启K3S服务

systemctl daemon-reload
systemctl restart k3s

升级ONES

进入部署工具

ones-ai-k8s.sh

初始化新增的配置项

make setup-ones-cluster-operator
make setup-tidb-operator
make init-config
make init-db

执行开始迁移命令

请根据命令输出的日志继续完成升级动作

make start-migration MIGRATION_DIR=config/migration
有迁移时,屏幕上应该打印如下输出:
1. Get the migration pod:

$ kubectl -n ones-system get pod -l job-name=upgrade-ones-{升级前版本后}-{升级后版本号}-mysql

2. View pod log, observe the migration progress and status:

$ make tail-migration MIGRATION_DIR=config/migration

If the migration is nearing completion, you will see logs similar to the following:

[xxxx/xxx/xxx xx:xx:xx] [info] cutover preflight round x took xx.xxs, migration is nearing completion and manual confirmation can be done anytime now.

Than you can confirm the migration, the database and services will be upgraded to the new version within a few minutes.

3. Confirm the migration:

$ make confirm-migration MIGRATION_DIR=config/migration
查看迁移进度
make tail-migration MIGRATION_DIR=config/migration

当屏幕上打印类似如下输出时,表示迁移执行完成

    [xxxx/xxx/xxx xx:xx:xx] [info] cutover preflight round x took xx.xxs, migration is nearing completion and manual confirmation can be done anytime now.
上一步确认迁移完成后,执行最终确认操作

此命令会将新版本资源应用到集群中,不可逆

make confirm-migration MIGRATION_DIR=config/migration

看到类似的输出代表升级成功

2023-09-07 04:08:37,917 [INFOJ The system has been surccessfully upgraded to version v3.15.9 from v3.14.32
没有迁移时,屏幕上应该打印如下输出:
2024-08-28 02:40:12,231 [INFO] ugrade ones version from v6.1.39 to v6.1.43
2024-08-28 02:40:12,264 [INFO] There is no need for migration.
2024-08-28 02:40:12,264 [INFO] Skip migration. Now you can continue to upgrade via 'make setup-ones'

没有迁移直接执行如下命令应用新版本资源即可

make setup-ones

执行完成之后系统会升级到新版本。可以访问 ONES 查看。