Kubernetes:如何将容器日志文件挂载到主机

时间:2018-08-06 07:29:22

标签: logging kubernetes docker-volume

我有一个在pod内部运行的应用程序,该应用程序是由k8s中的部署规范创建的。由于我在所有节点上都有NFS客户端,因此可以将卷从主机装载到Pod。这是yml文件的mount-vol部分

spec:
  containers:
    volumeMounts:
    - mountPath: /app/config
      name: config-volume
    - mountPath: /var/log
      name: logs

  volumes:
  - name: config-volume
    hostPath:
      path: /nfs/config
  - name: logs
    hostPath:
      path: /nfs/logs/containerlogs

配置卷:它将配置文件从主机挂载到Pod容器。

日志:它不起作用。我想将日志文件夹从Pod容器安装到主机文件夹。

2 个答案:

答案 0 :(得分:1)

我不认为您要挂载容器来托管。它总是托管到Pod。确保主机中存在路径/ nfs / logs / containerLogs,以便您的Pod可以对其进行写入。

答案 1 :(得分:-1)

对于我来说,您的Yaml几乎可以正常工作。 我个人认为您的Yaml需要完成,例如:

spec:
  containers:
    volumeMounts:
    - mountPath: /app/config
      name: config-volume
    - mountPath: /var/log
      name: logs

  volumes:
  - name: config-volume
    hostPath:
      path: /nfs/config
      type: Directory
  - name: logs
    hostPath:
      path: /nfs/logs/containerlogs
      type: Directory

您的规范也错过了配置imagecommand

如上所述,有2条路径可以存储2种日志。

您还可以做的是在容器规范中分配2条路径,就像在没有容器的情况下启动应用程序一样。

实际上,您的规范中的类似配置如下:

              command:
              - /application
              - --log-dir=/var/log
              - --config-log-dir=/app/config
              - --logtostderr=false
              - --v=3

您可能会注意到参数- --logtostderr- --v=3。如果您的应用程序具有类似的参数,则应正确设置它们。

完成正确的配置后,容器会将日志记录到正确的位置。