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包。

相关推荐
wang09075 小时前
自己动手写一个spring之IOC_2
java·后端·spring
来杯@Java5 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
yz_aiks6 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
梦梦代码精6 小时前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
不知名的老吴6 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver6 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
杨了个杨89827 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
鹤落晴春9 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
张忠琳9 小时前
【runc 1.4.2】(Part 2)runc 1.4.2 超深度分析 — CLI层:main.go、命令文件、runner、信号处理、TTY
云原生·kubernetes·runc