У меня есть развертывание kubernetes для инфраструктуры логирования.Там, где FluentD daemonset собирает журналы с различных узлов, перенаправляет их в агрегатор fluentD, который затем перенаправляет их на упругий поиск.
Я столкнулся с более серьезной проблемой.В моей логгере инфраструктура fluentD работает в 2 режимах.
1) Как у kubernetes DaemonSet
2) Как у обычного kubernetes Развертывание
Теперь проблема в "path / var/ log / fluentd-buffers / * "в DaemonSet создается внутри узла kubernetes, поэтому, даже если POD идет вниз, путь к буферу файлов не будет поврежден.Однако, в случае типа Deployment, путь к файлу находится внутри контейнера, поэтому, если pod отключится / перезапустится, буфер файла будет удален.
Мои запросы:
1) Есть ли их способмы можем смонтировать путь к узлу виртуальной машины kubernetes и указать его в файловом буфере.В этом случае это будет похоже на мой случай 1 (DaemonSet FluentD), и я согласен с этим.
2) [BEST] Или любой способ, которым мы можем подключить сетевое хранилище, как я это сделал для эластичного хранилища в файле yaml..
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>