代码的简化版本
trap 'rm /tmp/not_done; echo "trap command got executed"; sleep 10' SIGTERM
wait_sigterm() {
touch /tmp/not_done
while [ -f /tmp/not_done ]
do
sleep 60 &
wait $!
done
}
wait_sigterm如何确保trap命令得到执行?
一种方法是,如果我能够访问被杀死的容器的日志并检查我的回显消息。
我尝试在while循环中获取日志(kubectl -n命名空间名称、荚名称容器名称),这样我就可以选择最后写的日志,直到容器还活着为止。
但是回声信息并没有出现。我的猜测是,一旦我们杀死容器或其他东西,日志就不会被写入。是否有任何方法可以获取已销毁容器的日志或测试上述场景?
发布于 2020-11-25 11:06:17
要确定容器吊舱的最后终止状态,可以使用-o go-template获取它。
kubectl get pod $POD-NAME -n $NAMESPACE -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}'例如,在容器终止时,由于我的Jenkins节点上内存不足,我得到了:
容器名称:jenkins-节点 map[terminated:mapcontainerID:docker://ac5df0fb9e213839758f9e7ecd77a73e80a1f59309d725145ca192d7350f0014出口代码:137-11-25T06:50:50Z原因:OOMKilled启动时间:2020-11-18T13:58:49Z]
https://stackoverflow.com/questions/54808573
复制相似问题