1

当我./bin/kcl-bootstrap -p app.properties -j /usr/bin/java -e在终端运行 KCL 时,我做ps -ef | grep java了并得到了它的 pid。我发出kill -s TERM $PID_ABOVE. 我注意到节点 recordProcessor 设法像这样记录 2018-03-31T11:13:46.998 INFO recordProcessor - Shutdown requested 2018-03-31T11:13:48.024 INFO recordProcessor - Shutting down...

当我通过 docker run 命令运行等效命令时 ,docker run -v /tmp:/tmp -v ~/.aws:/root/.aws -ti cde3946e2cf9发出Ctrl-C或终止 docker 并不会导致上面生成日志。例如,recordProcessor 没有收到有关关闭请求的通知。docker stop cde3946e2cf9docker kill --signal=SIGTERM cde3946e2cf9

我们的 docker 部署在 Kubernetes 集群中,当我们重新部署 docker 时,我可以看到Process terminanted, will initiate shutdown.主处理器正在记录它,但没有报告工作人员关闭请求。

我想在重新部署 docker 时捕获这些事件,以确保我们能够优雅地处理关闭。

任何人都知道如何确保在集群中重新部署 docker 时工作人员确实得到通知?

谢谢

4

1 回答 1

1

对于面临类似问题的任何人,以下是我解决的步骤:

在 kubernetes 模板中添加一个 preStop 钩子来执行一个 shell 命令命令是kill -s TERM $(ps -ef | grep "MultiLangDaemon" | grep -v \"grep\" | awk '{print $1}')

于 2018-04-06T05:02:41.720 回答