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

相关推荐
古法安卓3 小时前
Android-日志系统源码解析
android·java·android studio
小夏coding5 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
MacroZheng6 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
十年Java程序媛7 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套
java·spring boot
xiaoqiMikko7 小时前
有人在搜一个不存在的 Tomcat 版本
java·tomcat
leeyi8 小时前
把软件装进不能上网的机房——一套建好了、还没上过战场的交付工程(第101篇)
docker·aigc·agent
用户31268748772011 小时前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang11 小时前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot
SimonKing11 小时前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员
YIAN11 小时前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试