K8s启动pod失败,日志报非法的Jar包排查思路(Invalid or corrupt jarfile /app/xxxx,jar)

这篇是几年前写的文章,之前一直纠结按照知识的学习顺序去发布文章,所以有些文章写了但没有发出来,最近准备把之前写的文章发一发,不纠结这个问题了,不然好多文章可能因为软件版本过时等问题写了都过期了,帮助不到大家了。

K8s启动pod失败,日志报非法的Jar包排查思路(Invalid or corrupt jarfile /app/xxxx,jar)前段时间工作中遇到的一个问题,把解决思路分享给大家。

文章目录

问题背景

1、pod一直重启,查看日志报非法的jar包的错误Invalid or corrupt jarfile /app/xxxx,jar,发现是执行了一个restart的脚本,但是脚本是在打包这个镜像的基础镜像里放进去的,基础镜像的dockerfile也没有,所以不太好看,pod启动不了也无法进入pod去排查。

解决思路

1、想看脚本不止可以从dockerfile中看,也可以在pod中看,虽然我们现在的pod是异常的,但是我们可以通过修改deploy中containers字段下command的命令,原本是

复制代码
- /bin/sh
- /app/bin/restart.sh
- start

修改成

复制代码
- tailf 
- /app/bin/restart.sh 

这样会把容器夯住,pod就是启动状态了,然后exec就可以点进去看脚本。如果他没有这个参数的话,我们也可以加上这个command给他覆盖掉。因为如果command写了,会覆盖Dockerfile中的配置。

2、看了脚本后发现是在java -jar的地方报的错,手动执行restart的脚本还是报错,然后我就想会不会jar包有问题,去jar包存放目录大小看到了jar包大小为0,这肯定是不正常的,然后开发去看了打包成镜像前的jar包大小,也是0,这样就找到问题了,让开发打了包重新部署,pod就正常了。

3、听开发分析是因为打包前要清除最外层的output,否则就会生成一个空的jar包。

相关推荐
步行cgn6 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风6 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
aramae7 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路7 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
Wang's Blog8 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog8 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
九皇叔叔8 小时前
Kubernetes 资源管理方式详解:命令式与声明式管理
docker·容器·k8s
Ivanqhz8 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_2518364579 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong10 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源