我跑的时候
$ kubectl logs <container>
我得到了我的豆荚的日志。
但那些日志的文件在哪里?
一些消息来源说/var/log/containers/
其他人说/var/lib/docker/containers/
但我找不到我的实际应用程序或pod的日志。
磁盘文件名来自
docker inspect $pod_name_or_sha | jq -r '.[0].LogPath'
假设docker守护进程的配置是默认的{"log-driver": "json-file"}
,如果kubectl logs
行为正确,几乎可以保证为真。
这也可能不言而喻,但你必须在调度Pod的节点上使用docker inspect
,或者在磁盘上查看日志文件的存在,以做任何有用的事情。 kubectl describe pod $pod_name
将呈现节点名称,或者您可能怀疑它将在kubectl get -o json pod $pod_name
中,如果您希望以编程方式获取它。
你在这些目录中看到了什么吗?
在我的集群中,来自每个pod的stdout / stderr日志都在/var/log/containers
中,但是有一些链接/重定向:
/var/log/containers/<pod-name>_<namespace>_<container-name-container-id>.log -> /var/log/pods/<some-uuid>/<container-name>_0.log
该日志实际上链接到/var/lib/docker
:
<container-name>_0.log -> /var/lib/docker/containers/<container-id>/<container-id>-json.log