【问题标题】:Kubernetes: how can I mount container log files to hostKubernetes:如何将容器日志文件挂载到主机
【发布时间】:2019-01-13 02:44:09
【问题描述】:

我有一个在 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

config-volume:它将配置文件从主机挂载到 pod 容器。

日志:它不工作。我想将日志文件夹从 pod 容器挂载到主机文件夹。

【问题讨论】:

标签: logging kubernetes docker-volume


【解决方案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。如果您的应用程序有类似的参数,您应该正确设置它们。

在你做正确的配置后,容器会将日志记录到正确的位置。

【讨论】:

    【解决方案2】:

    我认为您不会将容器安装到主机上。它始终是 pod 的宿主。确保主机中存在路径 /nfs/logs/containerLogs 以便您的 pod 可以对其进行写入。

    【讨论】:

    • /nfs/logs/containerlogs 存在但不能写日志
    • 没有错误。当我将容器文件挂载到主机文件时,日志无法写入
    • 当你说日志不能写通常你会得到一些信息为什么它不能写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2017-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多