查看kubernetes的pod控制台日志

555 阅读1分钟

Dockerstdout从每个容器捕获日志并将它们存储在/var/lib/docker/containers主机上。如果 Kubernetes 使用 Docker 作为容器运行时,Docker 还会将容器日志存储在 Kubernetes 节点上的该位置。但是由于我们不直接在 Kubernetes 中运行容器(我们运行 Pods),因此 Kubernetes 也创建了/var/log/pods//var/log/containers目录,以帮助我们更好地组织基于 Pods 的日志文件。 内的每个目录都/var/log/pods/存储单个 Pod 的日志,每个目录都使用结构命名<namespace>_<pod_name>_<pod_id>

您可以通过运行来获取 Pod 的 ID kubectl get pod -n core gloo-76dffbd956-rmvdz -o jsonpath='{.metadata.uid}'。如果您习惯使用yq,您可能会发现运行起来kubectl get pod <pod_name> -o yaml | yq r - metadata.uid更加直接。

每个/var/log/pods/<namespace>_<pod_name>_<pod_id>/目录中都有更多目录,每个目录代表 Pod 中的一个容器。这些目录的名称等于容器的名称。最后,当我们查看一个/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/目录时,我们会发现 Docker 中存储的日志文件的符号链接/var/lib/docker/containers。同样,/var/log/containers/目录内部是指向目录的符号链接/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/。这些符号链接使用结构命名<pod_name>_<namespace>_<container_id>