详解如何获取K8S Pod日志

1,384 阅读1分钟

大家都知道可以使用kubectl命令从 Kubernetes 中的 Pod 检索应用程序日志。

下面将展示

  • 如何从正在运行的 Pod(包括所有副本)和之前崩溃的 Pod中 获取日志。
  • 如何使用kubectl命令实时跟踪和查看Pod尾部的日志。

获取Pod名称

要从 Kubernetes 中的 Pod 获取日志,首先需要找到 Pod 的名称或与 Pod 关联的标签:

$ kubectl get pods --show-labels

获取Pod日志:

$ kubectl logs <podName>

如果 Pod 之前崩溃过,您可以使用以下命令访问前一个 Pod 的日志:

$ kubectl logs --previous <podName>**strong text**

如果一个 Pod 有多个副本,并且具有关联的标签(例如app=my-app),您可以使用它来查看具有该标签的所有 Pod 的日志:

$ kubectl logs -l app=my-app

获取Pod尾部日志

上面的命令显示 Pod 生命周期内收集的所有日志,因此可能需要一些时间才能显示全部日志。

有一种方法可以使用kubectl命令来跟踪日志,例如,要从 Pod 中跟踪最后 100 行日志,请执行:

$ kubectl logs --tail=100 <podName>

显示过去一小时内写入的 Pod 日志:

$ kubectl logs --since=1h <podName>

最后 15 分钟:

$ kubectl logs --since=15m <podName>

实时关注Pod日志

还可以实时跟踪来自 Pod 的日志:

$ kubectl logs --since=15m <podName>

要跟踪 Pod 中的最后 100 行日志并实时跟踪它们:

$ kubectl logs --tail=100 -f <podName>