当我在终端上以./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 stop cde3946e2cf9
或docker kill --signal=SIGTERM cde3946e2cf9
或Process terminanted, will initiate shutdown.
以终止泊坞广告并未导致上面生成的日志。例如,recordProcessor没有收到有关关闭请求的通知。
我们的docker部署在Kubernetes集群中,当我们重新部署docker时,我可以看到主处理器正在记录this.range
,但是报告的工作人员关闭请求没有任何内容。
我想在重新部署docker时捕获这些事件,以确保我们正常处理shutdown。
任何人都知道如何确保在群集中重新部署docker时工作人员会收到通知吗?
由于
答案 0 :(得分:1)
对于任何面临类似问题的人,以下是我解决的问题:
在kubernetes模板中添加preStop挂钩以执行shell命令
命令为kill -s TERM $(ps -ef | grep "MultiLangDaemon" | grep -v \"grep\" | awk '{print $1}')