概要描述
当前 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 。
拷贝 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 工作。