问题遇到的现象和发生背景
spring cloud应用如果部署在虚拟机里,当java应用发生重启后,会自动触发jvm虚拟机关闭的extShutdownHook回调机制,自动从nacos反注册下线(De-register)。
问题是如果是java应用部署在k8s中,当deployment被更新后,原来的pod会收到sigterm信号处在terminating状态,这个情况下会触发extShutdownHook回调吗
关于jvm的extshutdownhook我找到以下一段描述
jvm shutdown hook,即虚拟机关闭钩子,是允许在虚拟机退出前执行一些操作的机制,可以用于进行一些资源的清理等善后工作,对于包括但不限于以下的情况注册的虚拟机关闭钩子会被执行。
1:程序的正常退出
2:System.exit()
3:Ctrl+C
4:OutOfMemoryError
5:kill pid(注意非“-9”)
那么我们有必要配置prestop去实现从nacos上的优雅下线吗
操作环境、软件版本等信息
nacos2.1.1
ec2虚拟机
jdk8