代码的简化版本
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
Run Code Online (Sandbox Code Playgroud)
如何确保 trap 命令已执行?
一种方法是我可以访问被杀死的容器的日志并检查我的回显消息。
我尝试在 while 循环中获取日志(kubectl -n 命名空间名称日志 pod 名称容器名称),以便我能够选择最后写入的日志,直到容器处于活动状态。
但回声消息不存在。我的猜测是,一旦我们杀死容器或其他东西,日志就不会被写入。有什么方法可以获取已杀死容器的日志或测试上述场景吗?
方法一
如果您想从 pod POD_NAME 查看之前终止的容器的日志。您可以使用以下带 -p 标志的命令
kubectl logs POD_NAME -c CONTAINER_NAME -p
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令获取更多信息,例如选项和标志
kubectl logs --help
Run Code Online (Sandbox Code Playgroud)
方法2
另一种确定终止消息的方法是在 Pod 对象的 Status 字段中。
kubectl get pod $POD_NAME -o yaml
检查containerStatuses的lastState字段:
status:
conditions:
containerStatuses:
- containerID:
image: registry.access.redhat.com/rhel7:latest
imageID:
lastState: {}
state:
running:
Run Code Online (Sandbox Code Playgroud)
这是阅读终止消息的更多详细信息
归档时间: |
|
查看次数: |
18912 次 |
最近记录: |