kubernetes如何在没有stdout或stderr的情况下收集日志文件

时间:2017-05-27 09:32:04

标签: kubernetes

我的pod有多个日志文件,例如php-fpm + nginx堆栈。如何收集日志文件?

我知道nginx使用符号链接来做这件事。但这不能处理超过2个日志文件。

我想在主机中将卷装入pod,但是如何为每个pod设置不同的文件夹?无论如何要将主机中podname命名的文件夹挂载到pod文件夹/logs

raychaser提供了一种收集/var/log/containers/文件夹的方法,但我认为它不适用于kubernetes。

2 个答案:

答案 0 :(得分:1)

最后,我找到了一种收集日志的方法。

  1. 确保所有应用将所有日志文件写入文件夹,例如 /med/log
  2. 确保所有应用都使用脚本启动作业,例如 entrypoint.sh
  3. 在装载卷中创建一个由$ HOSTNAME命名的文件夹,例如 /log/$HOSTNAME
  4. 链接文件夹:ln -sf /log/$HOSTNAME /med/log
  5. 在k8s中,您需要将主机日志文件夹/var/log/k8s/挂载到/log。日志目录看起来像:

    /var/log/k8s/
    |-- app1-${container_id}/
    |   |-- access.log
    |   |-- error.log
    |-- app2-${container_id}/
        |-- access.log
        |-- error.log
    

答案 1 :(得分:0)

您可以使用Fluentd之类的日志记录解决方案,它允许您定义多个信息源。由于您有几个日志文件,它可以适用于您的用例。

http://docs.fluentd.org/v0.12/articles/quickstart http://docs.fluentd.org/v0.12/articles/config-file