gpt4 book ai didi

tomcat - Kubernetes 正常关闭 Spring Boot Tomcat 应用程序

转载 作者:行者123 更新时间:2023-11-28 22:23:53 24 4
gpt4 key购买 nike

我在 Kubernetes 集群中的 Tomcat 上运行 Java Spring Boot 引导应用程序,我使用生命周期 Hook 在容器终止之前关闭 Tomcat。还定义了 30 秒的终止宽限期。

预期行为:当我终止 pod 或删除部署时,tomcat 正常关闭。

实际行为:tomcat 突然关闭。

lifecycle:
preStop:
exec:
command:
- /usr/local/tomcat/bin/catalina.sh

有人可以帮忙吗?

最佳答案

在 Kubernetes 中,preStop Hook 在 pod 终止之前执行。

对于上述用例,当删除 pod/deployment 时,必须在 pod 终止之前正常关闭 tomcat 进程。

通过在 pod 终止之前正常关闭 tomcat 服务器,以下示例 pod 定义有效。注意:这个定义中的容器是FROM tomcat:9.0.19-jre8

apiVersion: v1 
kind: Pod
metadata:
name: demopod
spec:
containers:
- image: demo:web
name: demo-container
ports:
- containerPort: 8080
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
preStop:
exec:
command: ["/bin/sh", "-c", "echo Stopping server > /usr/share/message1; sleep 10; sh /usr/local/tomcat/bin/catalina.sh stop"]

在上面的定义文件中,我们运行三个命令(根据需要更改)。

  1. 将关机信息写入/usr/share/message1

  2. sleep 10(只是为了给时间查看 pod/容器日志)

  3. 运行 Catalina.sh stop停止 tomcat 服务器的脚本。

调试:对于 PreStop,如果处理程序失败,则会广播一个事件,即 FailedPreStopHook 事件。您可以通过运行 kubectl describe pod <pod_name> 查看这些事件

请参阅下面的帖子以获取更详细的说明: http://muralitechblog.com/kubernetes-graceful-shutdown-of-pods/

关机日志: Valid shutdown logs

关于tomcat - Kubernetes 正常关闭 Spring Boot Tomcat 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com