logging - Kubernetes Pod日志的绝对路径是什么?

标签 logging kubernetes containers logstash

kubernetes pod日志的绝对路径是什么?
当我尝试kubectl logs pod时,我可以看到pod的日志。我想知道正在运行的pod的日志文件路径。

kubectl日志npapp-0r9jw

output: rectory /hab/pkgs/core/tomcat8/8.5.9/20170514144202/tc/webapps/ROOT has finished in 21 ms
national-parks.default(O): 22-Oct-2017 05:33:54.526 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /hab/pkgs/core/tomcat8/8.5.9/20170514144202/tc/webapps/manager
national-parks.default(O): 22-Oct-2017 05:33:54.564 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /hab/pkgs/core/tomcat8/8.5.9/20170514144202/tc/webapps/manager has finished in 38 ms
national-parks.default(O): 22-Oct-2017 05:33:54.564 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /hab/pkgs/core/tomcat8/8.5.9/20170514144202/tc/webapps/host-manager
national-parks.default(O): 22-Oct-2017 05:33:54.595 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /hab/pkgs/core/tomcat8/8.5.9/20170514144202/tc/webapps/host-manager has finished in 31 ms
national-parks.default(O): 22-Oct-2017 05:33:54.599 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
national-parks.default(O): 22-Oct-2017 05:33:54.613 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
national-parks.default(O): 22-Oct-2017 05:33:54.620 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2735 ms

在哪里可以看到绝对日志文件路径?

最佳答案

如果查看Kubernetes sources,将会看到 pkg/routes/logs.go ,它将(默认情况下)提供/var/log中的文件内容(提供静态文件following this example)

func logFileHandler(req *restful.Request, resp *restful.Response) {
    logdir := "/var/log"
    actual := path.Join(logdir, req.PathParameter("logpath"))
    http.ServeFile(resp.ResponseWriter, req.Request, actual)
}

如您在kubernetes/kubernetes issue 53022中看到的:

The current symlink /var/log/containers is pointing to /var/log/pods/pod_UID/*.logs



因此,日志的完整绝对路径为:
/var/log/pods/pod_UID/*.logs

更新2019:

此问题也涉及analytics-platform-helm-charts PR 91:

Symlink /var/log/containers has been deprecated in favor of /var/log/pods for our version of the docker daemon for kubernetes metadata.



参见Kubernetes CRI(2018年11月)

Kubelet will be configured with a root directory (e.g., /var/log/pods or /var/lib/kubelet/logs/) to store all container logs. Below is an example of a path to the log of a container in a pod.

/var/log/pods/<podUID>/<containerName>_<instance#>.log

In CRI, this is implemented by setting the pod-level log directory when creating the pod sandbox, and passing the relative container log path when creating a container.

PodSandboxConfig.LogDirectory: /var/log/pods/<podUID>/
ContainerConfig.LogPath: <containerName>_<instance#>.log

关于logging - Kubernetes Pod日志的绝对路径是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46870948/

相关文章:

c# - 在 app.config 中组合多个跟踪源过滤器

java - 在 Swing 应用程序中使用 java.util.logging 包

kubernetes - 哪个 CNI 最适合在 kubernate 部署中运行带有外部 sql server 的 .net 核心应用程序?

kubernetes - 如何在 Kubernetes 中部署 TURN 服务器(coturn)

json - Kubernetes 错误 json : cannot unmarshal string into Go value of type map[string]interface {}

azure - 如何在应用服务容器中安装 SSH

node.js - 无法在用 nodejs 编写并部署在 hyperledger-fabric 上的智能合约中打印日志

php - 如何在 Codeigniter 中更改日志文件扩展名

c++ - 将许多 vector 累积到一个容器中而无需复制

docker - Docker hello-world给出以下错误:容器/hello:无此类文件或目录“:未知