适用于 TDS Studio 1.1 – 2.x 版本的 Inceptor 打 patch 方法

  安装, 升级, 安装部署, 产品补丁
内容纲要

概要描述

当前 Studio 产品版本已经与 TDH 版本解耦,即可能发生同时使用较低版本的 Inceptor 和较高版本的 Studio 产品的情形。在这种情况下,可能发生 Inceptor 中缺少 Transporter 相关类的情况,从而产生日志打印不全、导数失败等异常。

为了解决这个问题,需要对这种情况的 Inceptor 打上 patch 包。本文主要描述在 TDH 5.x 、TDH 6.x 、TDH 7.x 版本的 Inceptor 中打上 patch 包的方法。

详细说明

判断是否需要打 patch

首先判断 Studio 版本。在 Transporter Server 所在节点上,执行以下命令:

docker images | grep studio

如果结果的第二列出现studio-1.studio-2.字样,那么 Inceptor 可能需要打 patch ,再进行下一步的确认,否则无需打 patch ,请略过本文。

接下来需要判断 Inceptor 镜像中的包版本,请注意,这只是一个粗略的判断方法。在集群任意节点上,执行以下命令:

kubectl exec -it $(kubectl get po -owide | grep inceptor-server-inceptor | head -n 1 | awk '{print $1}') bash

接下来进入了 Inceptor pod 中。再执行以下命令:

ll /usr/lib/inceptor/lib/ | grep -E 'exec|commons-cli'

此时应该会输出两个文件的信息,对比一下两个文件的时间,如果两个文件时间一致,说明没有打过 patch ,如果时间不一致,那么可能打过 patch 也可能没有打过(如果不清楚是否打过,建议最好还是打一下)。

下载 patch 包

如果您的 Inceptor 版本 >= 6.2,那么点击 这里下载 patch 包,如果您的 Inceptor 版本低于 6.2,那么点击这里下载 patch 包。

如果发现链接失效,请关注【星环科技服务号】,向我们提交一个工单来获取新的下载链接。

创建临时目录

在安装了 Inceptor 任意角色的节点,创建临时目录,例如 new_inceptor 。

如果已经存在了这个目录,那么需要换一个名字,或将已经存在的目录清空,确保创建出来的是一个空目录。

mkdir /home/new_inceptor

cd /home/new_inceptor

上传 patch 包到该临时目录

通过任意方式将下载的 patch 包上传到该目录,此处以 rz 命令为例。

rz -be

选择刚刚下载的 patch 包文件,inceptor_fix_1.1_2.x.tar.gz 或 inceptor_fix_1.1_2.x_for_6.2+.tgz。

确定 Inceptor 镜像

docker images | grep inceptor

找到最新的 Inceptor 镜像包,记下第二列,即为 tag ,同时记下第三列,即为 image_id 。

启动临时容器

docker run -it --rm --net host -v /home/new_inceptor:/root/temp {image_id} bash

image_id 为 docker images 命令获取的 Inceptor 镜像的ID,需要修改为实际的值。

解压 patch 包

cp /root/temp/{patch_name} /tmp

cd /tmp

tar zxvf {patch_name}

patch_name 即为下载的 patch 包文件名,6.2及以上版本为 inceptor_fix_1.1_2.x_for_6.2+.tgz ,6.2以下版本为 inceptor_fix_1.1_2.x.tar.gz 。

执行 patch

cd inceptor_fix_1.1_2.x

./patch_inceptor.sh

倒数第二行中去掉.bak的文件即为新包,如下图蓝框所示,记为 new_jar 。

file

拷贝 jar 包

cp {new_jar} /root/temp

cp jars/opencsv-3.9.jar /root/temp

exit

确认是否无误

ll

此时应该看到3个文件,其中2个是 jar 包。

获取 registry 节点

kubectl get po -o wide -n kube-system | grep -i "registry" | head -1 | awk '{print $7}' 

记下输出结果,即为 registry 。

编写 DockerFile

vi DockerFile

在 DockerFile 文件中,添加如下内容。

FROM {registry}:5000/transwarp/inceptor:{tag}
ADD {new_jar} /usr/lib/inceptor/lib/{new_jar}
ADD opencsv-3.9.jar /usr/lib/inceptor/lib/opencsv-3.9.jar

registry 、tag 和 new_jar 都是前面步骤获取的,需要更改为实际的值。

备份原始镜像

docker tag {image_id} $(kubectl get po -o wide -n kube-system | grep -i "registry" | head -1 | awk '{print $7}' ):5000/transwarp/inceptor:{tag}-bak

image_id 和 tag 均需要改成实际的值。

创建新镜像

docker build -f DockerFile -t $(kubectl get po -o wide -n kube-system | grep -i "registry" | head -1 | awk '{print $7}' ):5000/transwarp/inceptor:{tag} ./

docker push $(kubectl get po -o wide -n kube-system | grep -i "registry" | head -1 | awk '{print $7}' ):5000/transwarp/inceptor:{tag}

重启 Inceptor

在页面上重启 Inceptor 服务,完成 patch 工作。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。