AWS KCL 在 docker 中捕获关闭信号

AWS KCL capture shutdown signal in docker

当我在终端 运行 KCL 作为 ./bin/kcl-bootstrap -p app.properties -j /usr/bin/java -e,然后我做了 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 运行 命令等价时 docker run -v /tmp:/tmp -v ~/.aws:/root/.aws -ti cde3946e2cf9、发出 Ctrl-Cdocker stop cde3946e2cf9docker kill --signal=SIGTERM cde3946e2cf9 以终止 docker 并没有导致上面生成日志。例如,recordProcessor 没有收到有关关闭请求的通知。

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

我想在重新部署时捕获这些事件 docker 以确保我们妥善处理关机。

有人知道如何确保工作人员在集群中重新部署 docker 时收到通知吗?

谢谢

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

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