我有一个用于记录基础设施的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>