查看库伯内特群岛中被撞毁的豆荚的日志文件

有什么办法查看库伯内特一个坠毁的分离舱的日志文件吗? 我的 pod 在启动 plicationController 之后将其状态列为“ CrashLoopBackOff”。我搜索了所有可用的文件,没找到。

84930 次浏览

库伯内特中有一个错误,它阻止在 CrashLoopBackOff 状态下为 pods 获取日志。看起来修好了。这里的 在 github 上发行与其他信息

假设你的舱 仍然存在:

kubectl logs <podname> --previous

$kubectl log-h
- p,—— before [ = false ] : 如果为 true,则在 pod 如果它存在的话中打印容器前一个实例的日志。

kubectl logs命令只有在逃生舱启动并运行时才有效。如果不是,可以使用 kubectl events命令。

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

默认情况下,它不对事件进行排序,因此使用 --sort-by标志。

在许多情况下,kubectl logs <podname> --previous正在恢复:

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

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

如果你没有找到 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>,可以看到名称空间中的其他 pods)。

2) SSH 连接到该节点,然后:

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

B)如果前面的步骤不能帮助您通过运行 < br > sudo journalctl -u kubelet -n 100 --no-pager来搜索最新的系统级错误。

正如在另一个 StackOverflow 问题中所讨论的,我为此编写了一个开源工具

enter image description here

与其他答案的主要区别在于,当 pod 崩溃时,它会自动触发,因此它可以帮助避免以后开始调试、 pod 本身不再存在、无法获取日志的情况。

如果豆荚不存在了:

kubectl describe pod {RUNTIME_NAME_OF_POD}

在输出中应该有“ Events”部分,其中包含阻止 pod 启动的错误消息。