我有一个用于记录基础设施的kubernetes部署 . 在FluentD守护进程从各个节点收集日志的地方,将其转发到fluentD聚合器,后者将其转发到弹性搜索 .

我遇到了一个更大的问题 . 在我的 Logger 基础结构中,fluentD以2种模式运行 .

1)作为kubernetes DaemonSet

2)作为正常的kubernetes部署

现在问题是在daemonSet中的“path / var / log / fluentd-buffers / *”正在kubernetes节点内创建,所以即使POD发生故障,文件缓冲路径也将保持不变 . 但是在部署类型的情况下,文件路径在容器内,因此如果pod关闭/重新启动,则将删除文件缓冲区 .

我的疑问是:

1)他们以任何方式安装kubernetes VM节点路径并在文件缓冲区中指定它 . 在这种情况下,它将像我的情况1(DaemonSet FluentD),我很好 .

2)[BEST]或者我们可以安装网络存储,就像我在yaml文件中为elasticsearch存储所做的那样 .

volumeMounts:
- name: storage
mountPath: "/data"

以下是配置集:

// FluentD Daemon Set config. Here I am forwarding logs to fluentD aggregator.
    <match kubernetes.**>
      @type forward
      send_timeout 60s
      recover_wait 10s
      hard_timeout 60s
      <server>
        name worker
        host {{.Values.fluentd.host}}.{{.Release.Namespace}}
        port {{.Values.fluentd.port}}
        weight 60
      </server>
      <buffer>
        @type file
        path /var/log/fluentd-buffers/fluentd.node.buffer // THIS FILE IS GETTING CREATED
      </buffer>
    </match>


// FluentD aggregator config, where I am forwarding logs to elastic search.
    <match kubernetes.var.log.containers.es-master-*.*>
      @type elasticsearch
      logstash_format false
      index_name esmaster
      type_name logs
      host "#{ENV['FLUENT_ELASTICSEARCH_HOST']}"
      port "#{ENV['FLUENT_ELASTICSEARCH_PORT']}"
      <buffer>
        @type file
        path /var/log/fluentd-buffers/fluentd.aggregator.esmaster.buffer // THIS FILE IS NOT GETTING CREATED
      </buffer>
    </match>