记录一次K8S POD无限重启
项目在K8S上无限重启
项目无限重启,不可用。
问题排查
首先查看k8s描述。
kubectl describe pod -n namespace podname
重点查看 Last State,如图:
退出原因是completed,代码是0。
也就是说,项目正常启动了,然后项目就结束了。
我在启动脚本中sleep 3分钟,进入容器中看发生了什么,容器到3分钟后,报错
command terminated with exit code 137
于是百度,说137是内存不足,我查java日志,没发现oom。
发现问题
我调整启动脚本的sleep时间,发现sleep时间一到,容器准时结束,于是猜测是因为启动脚本结束了,导致容器关闭。
ps #命令查询pid
发现确实1好进程是启动脚本。
1号进程是所有进程的父进程,当1号进程执行结束后,就没有1号进程了,所以K8S的Pod运行就结束了。
参考资料:https://segmentfault.com/a/1190000009583997
解决方案
方法1:在start.sh末尾添加如下代码
tail -f /dev/null
方法2:在start.sh末尾写个死循环
while true; do
sleep 100;
done