升级指导
升级前必读
下面介绍升级操作前的必备知识。
升级方案
版本升级实现从低版本到高版本的安全、无缝升级,帮助用户轻松跟上技术迭代,保障系统长期处于安全、稳定、支持的状态。
升级前的版本要求
社区版本相关基本概念介绍如下:
组件版本:组件仓库可编译的最小单位即组件,其对应的Semantic Version就是组件版本,按照MAJOR.MINOR.PATCH演进。
社区版本:社区发布的版本,包含候选版本(Release Candidate,简称RC)、正式版本和补丁版本,比如v25.12-rc.2、v25.12、v25.12.1等。
LTS版本:每年1230发布的社区版本称为LTS版本。
可安装版本:候选版本和正式版本。
可升级版本:更高的可安装版本和补丁版本。
说明:
目前支持可升级的最低版本是v25.12-rc.2。
升级影响
非高可用集群升级K8s相关组件时,会出现短暂的apiserver服务不可用。
升级注意事项
只提供了版本升级功能,未提供版本降级功能,升级前建议备份etcd数据,升级失败时进行手动回滚。
升级流程
下面是升级流程图。
升级前准备与检查
下面介绍升级操作前的准备与检查项。
升级前准备与检查表
表1 升级前准备清单
| 序号 | 升级准备项目 | 准备内容 | 建议起始时间 | 耗时(天/小时/分钟) |
|---|---|---|---|---|
| 1 | 集群状态检查 | 检查集群状态是否是健康的 | 升级前 | 1分钟 |
| 2 | 准备版本配置文件 | 要升级到的版本配置文件 | 升级前一天 | 1分钟 |
| 3 | 上传版本包文件 | 镜像包文件(离线需要) 二进制文件(在线、离线均需要) | 升级前一天 | 10分钟 |
说明:
版本包文件耗时受版本文件需要准备的文件数量、网络速度影响较大。
集群状态检查
升级前需要确认集群是健康的,在管理集群的openFuyao管理面中选择“集群生命周期管理”查看相应的业务集群即可。
准备版本配置文件
获取版本配置文件
版本配置文件记录着组件的版本信息,获取地址:https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/version-config。
这个路径下包含一个名为index.yaml的索引文件和许多的版本配置yaml文件,可以通过wget下载:
bashwget https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/version-config/index.yaml下面展示的是index.yaml的样例内容:
yaml- openFuyaoVersion: v25.12 filePath: ./VersionConfig-v25.12.yaml - openFuyaoVersion: v25.12.1 filePath: ./VersionConfig-v25.12.1.yaml - openFuyaoVersion: v25.12-rc.2 filePath: ./VersionConfig-v25.12-rc.2.yaml版本文件可以通过wget下载:
bash# 比如下面是下载v25.12版本的配置文件 wget https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/version-config/VersionConfig-v25.12.yaml使用版本配置文件
版本配置文件的使用区分在线安装场景和离线安装场景,下面分开介绍。
在线场景
下载好配置文件,下面以VersionConfig-v25.12.2.yaml为例子进行介绍,通过下面步骤放置好。
查看installer-service的REMOTE_PATCH_PATH环境变量,会得到一个url地址。
bash# 1. 找到Pod名称,比如查询pod名称是installer-service-xxxxx kubectl -n openfuyao-system get pods -l app.kubernetes.io/name=installer-service # 2. 查看环境变量REMOTE_PATCH_PATH kubectl -n openfuyao-system describe pod installer-service-xxxxx | grep REMOTE_PATCH_PATH将配置文件放置在第一步查询到的url地址下,并编辑url目录下的index.yaml文件,添加下面内容。
bash- openFuyaoVersion: v25.12 filePath: ./VersionConfig-v25.12.yaml - openFuyaoVersion: v25.12.1 filePath: ./VersionConfig-v25.12.1.yaml - openFuyaoVersion: v25.12-rc.2 filePath: ./VersionConfig-v25.12-rc.2.yaml - openFuyaoVersion: v25.12.2 # 新增,填写VersionConfig-v25.12.2.yaml文件中openFuyaoVersion filePath: ./VersionConfig-v25.12.2.yaml # 新增
离线场景
下载好版本配置文件,在管理集群的openFuyao管理面中选择“集群生命周期管理 > 补丁上传”直接上传文件内容。
上传版本包文件
版本包文件分为离线镜像包文件和二进制文件,下面分开介绍。
制备和使用镜像包文件
说明:
镜像包文件是离线场景下升级所需要的。预备版本配置文件(以patchV1.yaml为例),提供两种策略制备补丁包文件,分别是registry和oci策略,其中前者需要运行docker守护进程的环境。
registry策略
按照下面步骤制备补丁包。
安装docker并配置docker,在Docker配置文件中增加以下配置。编辑/etc/docker/daemon.json文件(如果没有就创建一个)。
json{ "insecure-registries": [ "0.0.0.0/0" ] }执行下面命令,重启docker
bashsystemctl restart docker制备镜像包文件
执行下面命令制备镜像包文件。
bashbke build patch -f patchV1.yaml -t patchV1.tar.gz
oci策略
通过下面命令制备补丁包。
bashbke build patch -f patchV1.yaml -t patchV1.tar.gz --strategy=oci
下面展示镜像包文件如何同步到离线引导节点的镜像源服务,提供两种方式,分别是openFuyao管理面操作和引导节点后端操作。
openFuyao管理面
引导节点的openFuyao界面,进入“集群生命周期管理”,找到要升级的业务集群,进入“升级准备”,输入补丁包文件信息,单击“确定”,完成升级前镜像包的上传。
说明:
1.通过openFuyao管理面上传的只能是oci策略制备的镜像包。
2.镜像包文件需要是.tar.gz文件,且要放置在引导节点的/etc/openFuyao目录下。
3.通过openFuyao管理面的“升级准备”还可以将containerd、kubelet、kubectl二进制文件复制到引导节点的/bke/mount/source_registry/files目录下。引导节点后端
登录到引导节点后端,执行下面命令同步镜像。
bash# 需要先复制patchV1.tar.gz到引导节点 tar -xzvf patchV1.tar.gz # 同步镜像包到本地镜像源 bke registry patch --source ./patchV1 --target 0.0.0.0:40443
下载和上传二进制文件
下载升级所需的二进制文件,所需的文件会在版本配置文件中体现,如下样例:
yamlfiles: - address: https://openfuyao.obs.cn-north-4.myhuaweicloud.com/containerd/containerd/releases/download/patch_test/ files: - fileName: containerd-v2.1.2-linux-amd64.tar.gz - fileName: containerd-v2.1.2-linux-arm64.tar.gz执行下面的命令下载文件:
bashwget https://openfuyao.obs.cn-north-4.myhuaweicloud.com/containerd/containerd/releases/download/patch_test/containerd-v2.1.2-linux-amd64.tar.gz wget https://openfuyao.obs.cn-north-4.myhuaweicloud.com/containerd/containerd/releases/download/patch_test/containerd-v2.1.2-linux-arm64.tar.gz下载好的二进制文件需要放到引导节点的/bke/mount/source_registry/files目录下。
升级操作
按照下面步骤进行业务集群的升级:
- 管理集群的openFuyao界面,进入“集群生命周期管理”,找到业务集群,进入“升级”子界面,选择对应的升级版本,单击“确定”,下发升级操作。
- 等待升级结果,升级成功就结束流程,失败就需要手动回退(依赖于用户升级前备份的etcd数据)。