查看kubernetes中崩溃的pod的日志文件

时间:2015-12-04 09:17:30

标签: kubernetes

想知道在kubernetes中查看崩溃的pod的日志文件吗? 我的pod在启动replicationController后将其状态列为“CrashLoopBackOff”。我搜索可用的文档但找不到任何文档。

4 个答案:

答案 0 :(得分:43)

kubectl logs <podname> --previous

  

$ kubectl logs -h
      -p, - previous [= false]:如果为true,则在pod中打印容器的上一个实例的日志(如果存在)。

答案 1 :(得分:5)

kubernetes中存在一个错误,阻止了在CrashLoopBackOff状态下获取pod的日志。看起来它已修复。这里issue on github包含其他信息

答案 2 :(得分:5)

kubectl logs命令仅在Pod已启动并正在运行时才有效。如果不是,则可以使用kubectl events命令。

kubectl get events -n <your_app_namespace> --sort-by='.metadata.creationTimestamp'

默认情况下,它不会对事件进行排序,因此不会标记--sort-by

答案 3 :(得分:1)

在许多情况下,kubectl logs <podname> --previous返回:

Error from server (BadRequest): previous terminated container "<container-name>" in pod "<pod-name>" not found

因此,您可以尝试签入@alltej所示的名称空间事件(kubectl get events ..)。

如果找不到kubectl logs / get events的错误原因,并且无法使用外部日志记录工具查看错误,我建议:

1):检查Pod在哪个节点上运行:

$kubectl get -n <namespace> pod <pod-name> -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName

NAME              STATUS    NODE
failed-pod-name   Pending   dns-of-node

(如果删除<pod-name>,则可以在名称空间中看到其他窗格)。

2) SSH到该节点,然后:

A)在/var/log/containers/中搜索失败的容器容器名称,并转储其.log文件并搜索错误-在大多数情况下,错误原因将与操作/一起显示在此处。错误发生之前发生的事件。

B)如果上一步没有帮助,请尝试运行以下命令来搜索最新的系统级错误:
sudo journalctl -u kubelet -n 100 --no-pager