简单说下我出现的原因
首先 dockerfile
COPY start.sh start.sh
EXPOSE 9083
#CMD ["java", "-jar", "job-service-SNAPSHOT.jar"]
ENTRYPOINT ["sh", "start.sh"]
造成的主要原因就是 我用start.sh启动
#!/bin/bash
java $JAVA_OPTS -Dspring.profiles.active=$MY_PROFILES_ACTIVE_PATH -jar job-service-SNAPSHOT.jar
在这种情况无论我怎么添加优雅退出,都不会执行@PreDestroy
直到阅读一篇博客如何在kubernetes中优雅停机
kuectl exec -it pod -n namespace -- /bin/sh
ps -ef
result.png
顿时悟了,原来k8s优雅关闭了 sh,并没有关闭我的Jar,终于从自我怀疑中解脱了。
由于我的业务比较简单,所以没有文中的第二种解决方案
只用了简单的方案,修改start.sh
#!/bin/bash
exec java $JAVA_OPTS -Dspring.profiles.active=$MY_PROFILES_ACTIVE_PATH -jar job-service-SNAPSHOT.jar
问题解决!
网友评论