---
title: "Аддон Fluent Operator для Kubernetes"
description: "Аддон Fluent Operator для Kubernetes. Установка, настройка, примеры использования. Документация и инструкции по работе с облачными сервисами Timeweb Cloud."
---

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

В кластерах Kubernetes приложения и системные сервисы генерируют большое количество логов. Для удобного анализа и хранения этих логов их можно собирать в системы вроде Elasticsearch, Loki, Kafka, Prometheus и других.

Fluent Bit и Fluentd — инструменты для сбора и обработки логов. Но их настройка в Kubernetes может быть сложной:

-   Необходимо вручную создавать ресурсы (DaemonSet, StatefulSet);
-   Настраивать конфигурационные файлы;
-   Учитывать особенности контейнерных рантаймов;
-   Управлять секретами для аутентификации;
-   Следить за обновлениями и совместимостью.

Fluent Operator упрощает этот процесс:

-   Автоматизирует развертывание Fluent Bit и Fluentd, создавая необходимые ресурсы.
-   Использует Custom Resource Definitions (CRD) для настройки входов, фильтров, выходов и других параметров через YAML-манифест.
-   Управляет обновлениями и масштабированием Fluent Bit/Fluentd в ответ на изменения в кластере.
-   Упрощает интеграцию с Elasticsearch, Loki, Kafka, Prometheus и другими.

Вместо ручного создания конфигурации для Fluent Bit и Fluentd, вы устанавливаете Fluent Operator и описываете настройки. Оператор приводит кластер в нужное состояние и автоматически обновляет агенты при изменении конфигурации.

#### Основные компоненты

-   **Fluent Bit**: легкий агент для сбора логов.
-   **Fluentd**: мощный агент, который можно использовать как DaemonSet или StatefulSet для сложной фильтрации и буферизации.
-   **Fluent Operator**: управляет Fluent Bit и Fluentd через CRD.

## Установка

Fluent Operator можно установить через панель управления кластером:

1.  Перейдите во вкладку «Дополнения» и найдите дополнение Fluent Operator.
    

![Selection 170](https://content.timeweb.com/assets/491f370e-0d84-4a29-a9b0-a1deb73145e4.png?width=1001&height=918)

2.  Нажмите на него, чтобы открыть мастер настройки.
    
3.  Выберите «Продвинутая установка», отредактируйте конфигурацию под свои задачи и нажмите «Установить».
    

![Selection 171](https://content.timeweb.com/assets/a7710a08-533d-4850-9ed3-ddc56496b6f2.png?width=996&height=803)

## Параметры установки

#### Operator

Секция `operator:`

-   **containerRuntime**: задает используемый контейнерный рантайм. В нашем управляемом Kubernetes используется `containerd`. Это значение менять не нужно.
-   **logPath**: путь к логам. Для `containerd` используется `/var/log`.
-   **disableComponentControllers**: список компонентов Fluent Operator, которые нужно отключить. Возможные значения: `fluent-bit` и `fluentd`. По умолчанию устанавливаются оба компонента.

#### Fluent Bit

Секция `input:`

-   `tail:`
    
    -   `enable: true` — включает сбор логов с файлов, находящихся по пути `/var/log/containers/*.log`.
    -   `path: "/var/log/containers/*.log"` — задает путь к лог-файлам контейнеров.
    -   `refreshIntervalSeconds: 10` — частота обновления списка файлов логов (в секундах).
    -   `memBufLimit: 100MB` — ограничение памяти для буфера.
    -   `storageType: memory` — тип хранилища для буфера. Альтернативный вариант — `filesystem`, но перед использованием нужно подготовить том.
    -   `readFromHead: false` — начинать читать логи с конца.
    -   `skipLongLines: true` — пропускать слишком длинные строки.
-   `systemd:`
    
    -   `enable: true` — включает сбор логов из journald.
    -   `includeKubelet: true` — добавляет логи `kubelet` из `journald`.
    -   `storageType: memory` — задает тип хранилища для буфера логов `journald`.

Секция `output:`

Здесь перечислены основные выходы. Для включения каждого достаточно выставить соответствующий ключ `enable: true` и задать параметры:

**Elasticsearch**

```yml
  es:
    enable: false
    host: "<Elasticsearch url>"
    port: 9200
    logstashPrefix: ks-logstash-log
    bufferSize: 20MB
    traceError: true
    httpUser: "<username>"
    httpPassword: "<password>"
```

Настройка для отправки логов в Elasticsearch. Укажите URL и порт сервиса, а также учетные данные для аутентификации.

**Kafka**

```yml
  kafka:
    enable: false
    brokers: "<kafka broker list>"
    topics: ks-log
    bufferSize: 20MB
    retryLimit: "10"
```

Настройка для отправки логов в Kafka. Укажите список брокеров через запятую и топик для логов.

**Loki**

```yml
  loki:
    enable: false
    retryLimit: "no_limits"
    host: 127.0.0.1
    port: 3100
    httpUser: myuser
    httpPassword: mypass
    tenantId: "<tenant>"
```

Позволяет отправлять логи в Loki. Укажите хост, порт, учётные данные и идентификатор тенанта.

**stdout**

```yml
  stdout:
    enable: true
```

Полезно для тестирования, так как выводит логи в стандартный вывод (`stdout`).

Секция `filter:`

-   `multiline:`
    
    -   `enable: false` — по умолчанию мультилайн отключён.
    -   Можно настроить парсеры (go, python, java и т.д.) или подключать свои кастомные.
-   `kubernetes:`
    
    -   `enable: true` — включает фильтр Kubernetes, чтобы дописывать метаданные подов, такие как `namespace`, `pod`, `labels`, `annotations`.
    -   `labels: false`, `annotations: false` — по умолчанию не добавлять эти поля.
-   `containerd:`
    
    -   `enable: true` — включает фильтр для парсинга Containerd-логов.
        
-   `systemd:`
    
    -   `enable: true` — включает фильтр для парсинга `journald`.
        

#### Fluentd

-   `enable` — если нужно использовать Fluentd (вместо или вместе с Fluent Bit), установите `true`.
-   `mode`:
    -   `collector` — устанавливает StatefulSet.
        
    -   `agent` — устанавливает DaemonSet (как Fluent Bit), то есть один агент на ноду.
        
-   `forward`:
    
    -   `port: 24224` — стандартный вход в Fluentd через форвардинг.
        
-   `output` — аналогично Fluent Bit, есть секции `es`, `kafka`, `opensearch` и т.д.
    

## Удаление

Удаление дополнения через панель управления не поддерживается, но его можно выполнить вручную. Для этого выполните следующие шаги:

1.  Удалите объект `fluent-bit`:

```shell
kubectl delete -n fluent-operator fluentbit/fluent-bit
```

2.  Удалите Helm-релиз `fluent-operator`:

```shell
helm uninstall -n fluent-operator fluent-operator
```

3.  Удалите все CRD, связанные с `fluent-operator`:

```shell
kubectl delete crd $(kubectl get crd | grep fluent | awk '{print $1}')
```

4.  Проверьте, что все связанные ресурсы и пространства имен удалены:

```shell
kubectl get namespaces
```

После выполнения этих шагов Fluent Operator будет полностью удален из вашего кластера.
