代码的简化版本
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命名空间名称、荚名称容器名称),这样我就可以选择最后写的日志,直到容器还活着为止。
但是回声信息并没有出现。我的猜测是,一旦我们杀死容器或其他东西,日志就不会被写入。是否有任何方法可以获取已销毁容器的日志或测试上述场景?
发布于 2019-02-21 13:49:13
方法1
如果您想从pod POD_NAME签出先前终止的容器的日志。可以使用以下带有-p标志的命令
kubectl logs POD_NAME -c CONTAINER_NAME -p您可以使用以下命令获得更多信息,如选项和标志
kubectl logs --help方法2
另一种确定终止消息的方法是在Pod对象的状态字段中。
kubectl get pod $POD_NAME -o yaml
检查containerStatuses的字段lastState
status:
conditions:
containerStatuses:
- containerID:
image: registry.access.redhat.com/rhel7:latest
imageID:
lastState: {}
state:
running:下面是更详细的阅读-终止-讯息
发布于 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
复制相似问题