【发布时间】:2017-09-05 02:11:32
【问题描述】:
有什么方法可以获取 Kubernetes 集群中 pod 的日志文件吗?
我知道我可以使用“kubectl exec log -f $POD_NAME”命令获取日志,但我想直接访问日志文件。
【问题讨论】:
标签: kubernetes
有什么方法可以获取 Kubernetes 集群中 pod 的日志文件吗?
我知道我可以使用“kubectl exec log -f $POD_NAME”命令获取日志,但我想直接访问日志文件。
【问题讨论】:
标签: kubernetes
这取决于您使用的日志记录驱动程序
我假设您在此处使用默认的 json 日志记录驱动程序,但您可以使用 kubectl get po -o wide 看到 pod 调度的节点
然后,登录到那个节点,你会在/var/lib/docker/containers/<long_container_id>/<long_container_id>-json.log下看到容器的docker日志
您需要使用docker ps 和docker inspect 来确定长容器ID。
【讨论】:
kubectl get pod <pod_name> -n <namespace> -o jsonpath='{.spec.nodeName}' 以获取运行此 Pod 的节点。ssh 进入节点,您将在 /var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/ 找到 Pod 的日志。/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/ 目录中的文件是指向容器运行时写入其容器日志文件的符号链接。因此,与 jaxxstorm 的答案不同,您运行的是哪个容器运行时并不重要。
【讨论】:
我通常从/var/log/containers 检索它,在那里您可以找到部署在该特定机器上的所有容器日志
【讨论】: