gcs*_*str 7 logging kubernetes kubectl kubelet
当我跑步
$ kubectl logs <container>
我得到了豆荚的日志。
但是这些日志的文件在哪里?
一些消息来源说/var/log/containers/其他人说,/var/lib/docker/containers/ 但我找不到我的实际应用程序或pod的日志。
d4n*_*yll 19
简答:
如果您使用 Docker,则stdout来自每个容器的/var/lib/docker/containers. 但是 Kubernetes 也创建了一个目录结构来帮助您查找基于 Pod 的日志,因此您可以在/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/.
更长的答案:
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>。
你在这些目录中看到了什么吗?
在我的集群中,来自每个 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
Run Code Online (Sandbox Code Playgroud)
该日志实际上链接到/var/lib/docker:
<container-name>_0.log -> /var/lib/docker/containers/<container-id>/<container-id>-json.log
Run Code Online (Sandbox Code Playgroud)
磁盘文件名来自
docker inspect $pod_name_or_sha | jq -r '.[0].LogPath'
Run Code Online (Sandbox Code Playgroud)
假设 docker 守护进程的配置是默认的{"log-driver": "json-file"},如果kubectl logs行为正确,这几乎可以保证为真。
这也可能不言而喻,但您必须在 Pod 被安排在其上的节点上docker inspect,或者嗅探磁盘上是否存在日志文件,才能做任何有用的事情。kubectl describe pod $pod_name将呈现节点名称,或者kubectl get -o json pod $pod_name如果您希望以编程方式获取它,您可能会怀疑它会在其中。
| 归档时间: |
|
| 查看次数: |
4453 次 |
| 最近记录: |