我只是想在pod中找到日志位置。
我刚刚登录了pod,如下所示。
kubectl exec -it POD_NAME bash
但是,/ var / logs下的日志不可用。不确定实际的日志位置是什么以及如何更改它。
由于
答案 0 :(得分:2)
如果您的应用程序正在将日志写入文件,则该日志文件在容器中的位置取决于您的应用程序。日志文件在主机上的位置取决于您是否在主机上安装了日志目录。
如果您的应用程序将日志写入stdout
,那么容器运行时将捕获每一行并将其存储在主机上。对于Docker,它存储在/var/lib/docker/containers
目录中。
但是,通过将相关日志文件符号链接到/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/
,Kubernetes也使您更容易在Kubernetes节点上找到日志文件。
答案 1 :(得分:1)
无法回答您的问题,因为除了您之外,没有人知道您的应用程序是如何配置和部署的。
我只能猜测您的应用程序通过stdout
json日志记录驱动程序将日志写入Docker
,并且您的日志存储在您的某个k8s节点上:
$ sudo find /var/lib/docker/containers -name "*-json.log"
默认情况下,您可以使用kubectl -n <namespace> logs <pod_name>
命令
更多信息:https://kubernetes.io/docs/concepts/cluster-administration/logging/
答案 2 :(得分:0)
容器中的日志文件取决于您运行的应用程序,不同的应用程序将日志输出到不同的位置,例如,我环境中的tomcat输出日志到/ usr / local / tomcat / logs目录。
pod的日志,我们的意思是这里的控制台输出,将保存到主机的容器目录中,然后链接到/ var / log / pods / $ pod_name目录,你可以在那里找到日志。
答案 3 :(得分:0)
请检查/opt/logs/app.log
如果找不到此目录,则只需使用find命令搜索app.log。
find / -name "app.log"
在最坏的情况下
find / -name "*.log"