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

相关推荐
shjita3 分钟前
记录java执行中的一个错误细节
java·开发语言
空中海4 分钟前
Docker入门到精通
java·docker·eureka
小义_6 分钟前
【Kubernetes】(十二)配置存储卷
云原生·容器·kubernetes
itzixiao16 分钟前
L1-067 洛希极限(10分)[java][python]
java·开发语言·算法
IMPYLH21 分钟前
Linux 的 tac 命令
linux·运维·服务器·bash
java1234_小锋23 分钟前
Spring AI 2.0 开发Java Agent智能体 - Spring AI项目调用本地Ollama模型
java·人工智能·spring·spring ai2.0
二哈赛车手24 分钟前
新人笔记---多策略搭建策略执行链实现RAG检索后过滤
java·笔记·spring·设计模式·ai·策略模式
PESS ABIN24 分钟前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
AI进化营-智能译站31 分钟前
ROS2 C++开发系列15-模板实现通用算法|宏定义ROS2调试开关|一次编码适配多平台
java·c++·算法·ai
刀法如飞33 分钟前
Java数组去重的20种实现方式——指导AI解决不同问题的思路
java·算法·面试