首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在kubernetes为被杀的码头集装箱取取原木

在kubernetes为被杀的码头集装箱取取原木
EN

Stack Overflow用户
提问于 2019-02-21 13:46:15
回答 2查看 14K关注 0票数 4

代码的简化版本

代码语言:javascript
运行
复制
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命名空间名称、荚名称容器名称),这样我就可以选择最后写的日志,直到容器还活着为止。

但是回声信息并没有出现。我的猜测是,一旦我们杀死容器或其他东西,日志就不会被写入。是否有任何方法可以获取已销毁容器的日志或测试上述场景?

EN

回答 2

Stack Overflow用户

发布于 2019-02-21 13:49:13

方法1

如果您想从pod POD_NAME签出先前终止的容器的日志。可以使用以下带有-p标志的命令

代码语言:javascript
运行
复制
kubectl logs POD_NAME -c CONTAINER_NAME -p

您可以使用以下命令获得更多信息,如选项和标志

代码语言:javascript
运行
复制
kubectl logs --help

方法2

另一种确定终止消息的方法是在Pod对象的状态字段中。

kubectl get pod $POD_NAME -o yaml

检查containerStatuses的字段lastState

代码语言:javascript
运行
复制
status:
  conditions:

  containerStatuses:
  - containerID: 
    image: registry.access.redhat.com/rhel7:latest
    imageID:
    lastState: {}

    state:
      running:

下面是更详细的阅读-终止-讯息

票数 5
EN

Stack Overflow用户

发布于 2020-11-25 11:06:17

要确定容器吊舱的最后终止状态,可以使用-o go-template获取它。

代码语言:javascript
运行
复制
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://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/#list-container-images-using-a-go-template-instead-of-jsonpath

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54808573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档