Kubernetes 日志在 pod 中的位置

use*_*872 8 logging kubernetes

我只是想在 pod 中找到日志位置。

我刚刚登录到 pod,如下所示。

kubectl exec -it POD_NAME bash
Run Code Online (Sandbox Code Playgroud)

但是,日志在/var/logs. 不确定实际的日志位置是什么以及如何更改它。

d4n*_*yll 9

如果您的应用程序正在将日志写入文件,则该日志文件在容器中的位置取决于您的应用程序。日志文件在主机上的位置取决于您是否在主机上挂载了日志目录。


如果您的应用程序正在将日志写入stdout,那么您的容器运行时将捕获每一行并将其存储在主机上。对于 Docker,这存储在/var/lib/docker/containers目录中。

但是 Kubernetes 还通过将相关日志文件符号链接到/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/.


Kon*_*tin 5

无法回答您的问题,因为除了您之外,没有人知道您的应用程序是如何配置和部署的。

我只能猜测您的应用程序stdout通过Dockerjson 日志记录驱动程序将日志写入,并且您的日志存储在您的 k8s 节点之一上:

$ sudo find /var/lib/docker/containers -name "*-json.log"
Run Code Online (Sandbox Code Playgroud)

默认情况下,您可以使用kubectl -n <namespace> logs <pod_name>命令查找 pod 的日志

更多信息:https : //kubernetes.io/docs/concepts/cluster-administration/logging/


Kun*_* Li 1

容器中的日志文件取决于您运行的应用程序,不同的应用程序将日志输出到不同的位置,例如,我环境中的tomcat将日志输出到/usr/local/tomcat/logs目录中。

pod 的日志,我们这里指的是控制台输出,将保存到主机中的容器目录中,然后链接到 /var/log/pods/$pod_name 目录,您可以在那里找到日志。