跳到主要内容
版本:v3&v6

ONES 在线/离线升级

1.升级准备

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

1.1 查看可升级版本

可以通过以下命令选择一个可用的版本号,或联系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: ""

1.2 准备在线服务器下载升级包

  • 如果运行 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 - 

1.3 监控配置检查

失败警告!!!

当选定的 ONES 升级版本号小于v6.1.94v6.15.0时,确保 fluentOverlay 的值为 only-ones-logging,相关命令:

进入操作机

ones-ai-k8s.sh

查看当前环境 fluentOverlay 的配置值

make get_value KEY=fluentOverlay

根据要求调整 fluentOverlay 的值

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

1.4 获取当前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

2 升级操作

2.1 执行升级制品命令

首先请导入镜像,升级制品。注意:该操作会更新public.yaml中的版本镜像号,请在升级前操作

# 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

2.2 备份你的数据

升级前,执行数据备份任务;如果是外置数据库,请联系客户自行备份

ones-ai-k8s.sh

# 手动全量备份
make mysql-base-backup NAMESPACE=ones

# 查看日志
make logs-mysql-xbackup NAMESPACE=ones

具体说明请参考 备份与恢复

2.3 初始化新增的配置项

如下操作可能会影响业务,请在约定时间点操作

ones-ai-k8s.sh
make setup-ones-cluster-operator
make setup-tidb-operator
make init-config
make init-db

2.4 执行开始迁移命令

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

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

2.5 安装/更新内置插件

仅在 v6.18.1 及以上版本支持,安装/更新6个标品插件,根据授权决定是否启用。

make setup-ones-inner-plugins

3 升级后操作

3.1 升级K3S版本

升级之后执行kubectl get node检查k3s版本是否为v1.29.1+k3s2, 如果不是请参考执行Linux单机单独重装k3s

3.2 修改默认pod数限制

默认K3S只支持运行110个pod,新版本开启了插件运行时改造,在插件较多等场景下,需修改k3s pod实例限制

3.3 检查K3S证书有效期

默认K3S内置的普通SSL证书有效期为1年,需及时检查更新,参考K3S更新SSL证书; 同时请参考执行Linux单机单独重装k3s,调整证书有效期为100年。

3.4 调整插件运行资源

属性增强、项目进度管理等插件的默认limit不足,可能无法启动或运行时发生OOM,需结合服务器配置增大,参考调整插件运行资源

3.5 前后台重启插件

执行 kubectl get pod -n ones |grep -iE 'platform|plugin' | awk '{print $1}' |xargs kubectl delete pod -n ones 重启插件相关进程,同时告知客户在前台页面停用、再启用相关插件。

3.6 优化clickhouse配置

从低版本升级到6.1版本后,原clickhouseMemoryLimit: 2Gi或4Gi不足,可能导致Clickhouse无法启动或运行后报错,需调大。在config/private.yaml中添加 clickhouseMemoryLimit: 6Gi 再make setup-ones生效。

3.7 重建索引

如果本次升级,执行了数据migration迁移操作,请重建索引

3.8 重建效能

如果本次升级,执行了数据migration迁移操作,请重建 Performance 数据

3.9 开启可观测

从低于6.1.94以下版本升级过更新版本,请手动开启可观测性系统

3.10 调整备份

从低于6.1.94以下版本升级过更新版本,请参考数据备份&恢复详细说明, 关闭kafka备份、删除历史文件,打开clickhouse备份、验证备份成功。

3.11 调整https方式

从V3升级到V6版本的https客户,由于ingress配置https的方式不再维护,请参考开启/关闭 HTTPS关闭原ingress方式、参考配置 HTTPS://域名 访问配置内置的自定义网关.

3.12 加载证书

因V6版本的授权机制发生变化,当从V3版本升级到V6及以上版本时、请指导客户重新加载新的V6证书,否则无法使用ONES业务。

上述操作执行完成之后系统会升级到新版本,可以访问 ONES 查看业务是否正常!