概览
创建时间:2024-04-02 最近修改时间:2024-04-02
#1. 概览
容器化部署模式下,DeepFlow 通过 K8s 管理所有状态。因此 Hot Patch 一般以更新容器镜像方式提供。pre_patch 及 post_patch 需进入 mntnct 容器内执行。
#1.1 Patch 升级方法
制作Patch的注意事项:
- pre_patch.sh: 可选,若存在必须可执行,内含升级Patch之前需要执行的内容。
- 容器镜像: 可选,必须是小版本 tag
- post_patch.sh: 可选,若存在必须可执行,内含升级Patch之后需要执行的内容。
打 Patch 的注意事项:
- 不支持在x86/arm控制器上远程升级arm/x86环境的采集器。
- 请保持 patch 目录的路径与 gitlab上一致,例如路径后缀需要形如
/5.6/5.6.3-R3/01-20201022-13434-BUG,否则会影响 DeepFlow 版本信息生成。 - 确保 values-custom.yaml 中的 DeepFlow Version 信息符合要求 e.g. "DeepFlow-V6.0.1" "DeepFlow-V6.0.1-01" "DeepFlow-V6.0.1-21"
#1.2 自动升级流程
仅支持 6.0.0 及以后版本
#1.2.1 功能
- 支持容器镜像及 post_patch.sh 、mysql_issu.sql 的升级
- 支持专属采集器、ESXI 采集器自动升级
- 不支持 trident kvm 采集器自动升级
- 聚合 Patch 自动升级 (需使用聚合 Patch 包)
#1.2.2 升级流程
- 获取 Patch 压缩包 / 聚合 Patch 压缩包
- 执行 patch 命令
Usage:bash deepflow-patch [--allpatch] [Patch File Path] [Patch File Path] # 直接使用 Patch 文件路径作为第一个参数 e.g. /root/5.7.3_09-20211126-16616-BUG.tar.gz -k, --quick # 多个 Patch 时可使用 -k 参数关闭 helm 升级操作,仅最后一个 Patch 时再统一升级,可减少 Patch 时间 -a, --allpatch # 聚合 Patch 包升级模式,必须使用聚合 Patch 包 -h, --help # help how to use # 单个普通 Patch 升级 /usr/local/deepflow/bin/deepflow-patch 15-20211213-16728-BUG.tar.gz # 多个普通 Patch 快速升级(-k 参数关闭本次 helm 升级操作,仅最后一个 Patch 时再统一升级,可减少 Patch 时间) /usr/local/deepflow/bin/deepflow-patch --quick 15-20211213-16728-BUG.tar.gz # 聚合 Patch 一键升级 /usr/local/deepflow/bin/deepflow-patch --allpatch 15-20211213-16728-BUG.tar.gz1
2
3
4
5
6
7
8
9
10
11
12
注意:
- mntnct pod 需运行在拥有 kubectl 的 master1 上,多控制器节点场景如遇 mt 在其他控制器 node 上,可使用
kubectl cordon/uncordon node禁止调度/开放调度命令临时禁止调度到其他节点,重启 pod 后实现迁移 mt 运行节点。 - 从区域升级 Patch 暂需手动升级,不执行 post_patch.sh 及 mysql issu
#1.3 手动升级流程
- 下载并解压 01-patch 到指定目录
tar -zxvf xxx_patch.tar.gz -C /usr/local/deepflow/patch
- 合并 patch 中的 registry 文件夹与原 registry,无需 mv 原 registry,参考如下命令,注意修改成正确路径
/bin/cp -rvf /usr/local/deepflow/patch/5.7/5.7.3/02-20211118-16589-BUG/registry/* /usr/local/deepflow/registry/
- 如有部署模板更新,需按照路径合并,举例:
/bin/cp -rvf /usr/local/deepflow/patch/5.7/5.7.3/02-20211118-16589-BUG/templates/* /usr/local/deepflow/templates/
- 根据 patch_image_tag_list.txt中的镜像 tag 修改 /usr/local/deepflow/templates/values.yaml 组件对应 tag
- MySQL 数据升级
# 进入mntnct 服务对应的 POD 执行 kubectl exec -it -n deepflow pod-xxxxxxxx sh mysql -hmysql -uroot -p -P30130 deepflow < /usr/local/deepflow/patch/5.7/5.7.3/02-20211118-16589-BUG/mysql_issu.sql1
2 - 进入 mt 容器环境, , 并进入 /usr/local/deepflow/patch 中具体 Patch 目录,执行 post_patch 脚本
bash /usr/local/deepflow/patch/5.7/5.7.3/01-20211104-16397-FEATURE/post_patch.sh
- 修改 values.yaml 中的 deepflowVersion ,尾部增加 "-{最新patch号}",示例:"deepflowVersion: DeepFlow-V5.7.3-14"
- 安装 DeepFlow 相关组件
/usr/local/deepflow/bin/deepflow-deploy -d - 升级 DeepFlow 相关组件
/usr/local/deepflow/bin/deepflow-deploy -u - 重启 df-web
kubectl rollout restart -n deepflow deploy/df-web-deployment - 待 Pod 全都 Running 后登入前端,检查功能是否正常,检查版本号是否正确