java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > K8S(Docker)关闭SpringBoot微服务

K8S(Docker)如何优雅的关闭SpringBoot微服务

作者:Roc.Chang

这篇文章主要介绍了K8S(Docker)如何优雅的关闭SpringBoot微服务问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

K8S(Docker)优雅的关闭SpringBoot微服务

最近在折腾 K8S,当删掉一个 Pod 之后(一个 Pod 上部署了一个微服务实例),Eureka Server 竟然没有将该服务实例标记成 DOWN,正常来说,当一个 Eureka Client 关闭的时候会发送一个请求给 Eureka ServerEureka Server 会马上的将服务标记为 DOWN 状态,具体可以看本地开发日志。

o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
com.netflix.discovery.DiscoveryClient    : Shutting down DiscoveryClient ...
com.netflix.discovery.DiscoveryClient    : Unregistering ...
com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ZUUL-SERVICE/192.168.8.14:zuul-service:5555 - deregister  status: 200
com.netflix.discovery.DiscoveryClient    : Completed shut down of DiscoveryClient

其实解决起来并没有很高大上,关键问题是就是 Docker 语法的区别,因为 Docker 容器在 stop 的时候,只有 pid 为 1 的进程才能接收到终止信号,而 DockerCMD 命令与 ENTRYPOINT 命令都有两种类型的执行方式:

具体解决

CMD ["/bin/bash", "-c", "java -jar /webapp/zuul-admin.jar"]

# 如果需要添加参数,可以这样做
ENV COMMON="-Xms128m -Xmx128m"
CMD ["/bin/bash", "-c", "java $COMMOND -jar /webapp/zuul-admin.jar"]

# 反例,错误使用,如果是这样的的话,那么需要在 docker run 的时候通过 -e "COMMON=xxx" 进行传参
CMD ["/bin/bash", "-c", "java", "$COMMOND", "-jar /webapp/zuul-admin.jar"]

# shell 模式,这种模式启动的 pid 不为 1
CMD java -jar /webapp/zuul-admin.jar

# shell 模式带参数,这种模式启动的 pid 不为 1
ENV COMMON="-Xms128m -Xmx128m"
CMD java -jar $COMMON /webapp/zuul-admin.jar
ENTRYPOINT ["/bin/bash", "-c", "java -jar /webapp/zuul-admin.jar"]

# 如果需要添加参数,可以这样做
ENV COMMON="-Xms128m -Xmx128m"
ENTRYPOINT ["/bin/bash", "-c", "java $COMMOND -jar /webapp/zuul-admin.jar"]

# 反例,错误使用,如果是这样的的话,那么需要在 docker run 的时候通过 -e "COMMON=xxx" 进行传参
ENTRYPOINT ["/bin/bash", "-c", "java", "$COMMOND", "-jar /webapp/zuul-admin.jar"]

# shell 模式,这种模式启动的 pid 不为 1
ENTRYPOINT java -jar /webapp/zuul-admin.jar

# shell 模式带参数,这种模式启动的 pid 不为 1
ENV COMMON="-Xms128m -Xmx128m"
ENTRYPOINT java -jar $COMMON /webapp/zuul-admin.jar

后续有问题,还是需要多看文档:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文