【问题标题】:How can I save k8s pod logs to host disk如何将 k8s pod 日志保存到主机磁盘
【发布时间】:2020-04-13 04:18:20
【问题描述】:

我是 k8s 日志存储的堆栈。我们有无法输出到标准输出的日志,但必须保存到目录。我们想保存到 glusterfs 共享目录,例如 /data/logs/./xxx.log 我们的应用程序是用java编写的,我们怎么能这样做

【问题讨论】:

    标签: kubernetes fluentd


    【解决方案1】:

    这主要取决于您的 CRI 插件,通常是 Docker 命令行选项。默认情况下,它们已经写入本地磁盘,您只需将卷安装在正确的位置(可能是 /var/log/containers 或类似的,查看您的 Docker 配置)。

    【讨论】:

    • 是的,我知道你的意思。但我想说的是。我不想要 docker 日志,我想要原始文件。我的 yaml 文件是这样的:volumeMounts: - mountPath: /home /usr/skywalking-agent 名称:sw-agent - mountPath:/home/usr/log/containers 名称:logs
    • 感谢您的帮助,我现在知道了。我们可以使用k8s的新特性,例如env valueFrom和subPathExpr。再次感谢您。
    【解决方案2】:

    我在使用一个第 3 方应用程序时遇到了同样的问题。它在日志文件中写入日志,我希望 Fluentd 能够获取它们,所以我想以某种方式将它们打印到标准输出上。 我找到了一种解决方法,即在同一个 pod 中与应用容器一起运行一个额外的容器。

    假设第 3 方应用正在以下文件中写入日志:

    /some/folders/logs/app_log_file.log

    以下 pod 将运行两个容器,一个带有应用程序,另一个带有busybox图像,我们将使用它从应用程序容器中获取日志。

    apiVersion: v1
    kind: Pod
    metadata:
      name: application-pod
    spec:
      containers:
      - name: app-container
        image: <path-to-app-image>
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: log-volume
          mountPath: /some/folders/logs
      - name: log-fetcher-container
        image: busybox
        args: [/bin/sh, -c, 'sleep 60 && tail -n+1 -f /var/log/app_log_file.log']
        volumeMounts:
        - name: log-volume
          mountPath: /var/log
      volumes:
      - name: log-volume
        emptyDir: {}
    

    如您所见,此清单正在创建一个空卷并将卷挂载到应用容器中的 /some/folders/logs 文件夹和日志提取器容器中的 /var/log 文件夹。现在,应用程序容器写入 /some/folders/logs 的每个文件也将在 /var/log 中可见。 这就是为什么busybox镜像运行一个shell命令的原因:

    sleep 60 && tail -n+1 -f /var/log/app_log_file.log
    

    首先我们等待 60 秒,因为应用容器必须有时间启动并创建日志文件,然后 tail 命令会将日志文件中的每个新行打印到日志提取器容器的标准输出。

    现在 fluentd 将能够从应用容器的日志文件中获取日志,获取日志提取器容器的标准输出日志。

    【讨论】:

    • 感谢您的回答。但我遇到的问题是,当我有多个副本集时,日志文件会相互覆盖。我希望它们保存为 /data/logs///xxx.log。以便他们同时得到很好的保存。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2017-04-25
    • 2023-02-10
    • 2012-11-02
    相关资源
    最近更新 更多