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.129
、v6.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 查看。