Функциональность модуля может сильно измениться. Совместимость с будущими версиями не гарантируется

Модуль не включен по умолчанию в каком-либо наборе модулей.

Как явно включить или отключить модуль…

Чтобы явно включить или выключить модуль loki, установите spec.enabled в true или false в ModuleConfig/loki (создайте, при необходимости), или воспользуйтесь командой deckhouse-controller module в поде d8-system/deckhouse.

Пример включения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: loki
    spec:
      enabled: true
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module enable loki
    

Пример выключения модуля:

  • с помощью ресурса ModuleConfig:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: loki
    spec:
      enabled: false
    
  • с помощью команды deckhouse-controller (требуется kubectl, настроенный на работу с кластером):

    kubectl -ti -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module disable loki
    

Чтобы настроить модуль, используйте custom resource ModuleConfig с именем loki (подробнее о настройке Deckhouse…).

Пример ресурса ModuleConfig/loki для настройки модуля:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: loki
spec:
  version: 1
  enabled: true
  settings: # <-- Параметры модуля из раздела "Параметры" ниже.

Параметры

Версия схемы: 1

  • diskSizeGigabytes
    целочисленный

    Размер диска для хранения логов или размер PVC при указании параметра storageClass.

    Вы должны самостоятельно указать необходимый размер диска для хранения логов за период, указанный в параметре retentionPeriodHours. Loki не может удалять старые данные автоматически при заполнении диска.

    Занятый объем автоматически мониторится с помощью модуля extended-monitoring

    ОСТОРОЖНО! Если диск с данными Loki переполнится, приложение перестанет работать. Вам следует выбрать необходимый баланс между значениями параметров retentionPeriodHours и diskSizeGigabytes.

    По умолчанию: 2

  • lokiConfig
    объект

    Опции Loki, доступные для изменения.

    Подробнее о настройки Loki читайте в документации Loki.

    Внимание! Ошибочные настройки могут привести к неработоспособности Loki.

    • lokiConfig.grpcServerMaxConcurrentStreams
      целочисленный

      Ограничение на количество одновременных потоков для вызовов gRPC.

      По умолчанию: 100

    • lokiConfig.grpcServerMaxRecvMsgSize
      целочисленный

      Ограничение на размер сообщения gRPC, которое может получить сервер, в байтах.

      По умолчанию: 104857600

    • lokiConfig.grpcServerMaxSendMsgSize
      целочисленный

      Ограничение на размер сообщения gRPC, которое может отправить сервер, в байтах.

      По умолчанию: 4194304

    • lokiConfig.ingestionBurstSizeMB
      число

      Общий лимит всплеска объема принимаемых логов. Например, максимальный размер запроса на запись.

      По умолчанию: 6

    • lokiConfig.ingestionRateMB
      число

      Общий лимит скорости приема логов в мегабайтах в секунду.

      По умолчанию: 4

    • lokiConfig.maxChunksPerQuery
      целочисленный

      Максимальное количество файлов, которые могут быть скачаны в рамках одного запроса.

      По умолчанию: 2000000

    • lokiConfig.maxEntriesLimitPerQuery
      целочисленный

      Максимальное количество записей, возвращаемых для одного запроса.

      По умолчанию: 5000

    • lokiConfig.maxStreamsPerUser
      целочисленный

      Максимальное общее количество потоков логов для экземпляра Loki.

      Каждый поток логов имеет уникальный набор меток. Количество потоков равно количеству уникальных наборов меток. Например: ‘{job=”my-app”, instance=”kube-node-1”, namespace=”production”, pod_name=”backend-79dbf6fcb7-v5gs7”, app=”backend”}’.

      Значение 0 отключает ограничение.

      По умолчанию: 0

    • lokiConfig.perStreamRateLimit

      Максимальная скорость в байтах в секунду для одного потока. Может быть как числом, так и строкой с единицей измерения (KB, MB, GB).

      По умолчанию: 3MB

    • lokiConfig.perStreamRateLimitBurst

      Максимальный размер всплеска объема логов для одного потока. Может быть как числом, так и строкой с единицей измерения (KB, MB, GB).

      По умолчанию: 15MB

  • nodeSelector
    объект

    Структура, аналогичная spec.nodeSelector пода Kubernetes.

    Если ничего не указано или указано false, будет использоваться автоматика.

  • resourcesManagement

    Настройки запросов (requests) и ограничений (limits) использования CPU и памяти подами Loki.

    Примеры:

    resourcesManagement:
      mode: VPA
      vpa:
        mode: Auto
        cpu:
          min: 50m
          max: 2
          limitRatio: 1.5
        memory:
          min: 256Mi
          max: 2Gi
          limitRatio: 1.5
    
    resourcesManagement:
      mode: Static
      static:
        requests:
          cpu: 55m
          memory: 256Mi
        limits:
          cpu: 2
          memory: 2Gi
    
    • resourcesManagement.mode
      строка

      Режим управления ресурсами:

      • Static — классический, с помощью указания запросов/ограничений (requests/limits). Настраивается в секции параметров static;
      • VPA — с помощью VPA. Настраивается в секции параметров vpa.

      По умолчанию: "VPA"

      Допустимые значения: VPA, Static

    • resourcesManagement.static
      объект

      Настройка управления ресурсами в режиме Static.

      • resourcesManagement.static.limits
        объект

        Настройка ограничений (limits) использования CPU и памяти.

        • resourcesManagement.static.limits.cpu

          Настройка ограничений использования CPU (CPU limits).

        • resourcesManagement.static.limits.memory

          Настройка ограничений использования памяти (memory limits).

      • resourcesManagement.static.requests
        объект

        Настройки запросов ресурсов (requests) подов.

        • resourcesManagement.static.requests.cpu

          Настройка запроса CPU (CPU requests).

        • resourcesManagement.static.requests.memory

          Настройка запроса памяти (memory requests).

    • resourcesManagement.vpa
      объект

      Настройка управления ресурсами в режиме VPA.

      • resourcesManagement.vpa.cpu
        объект

        Настройки VPA при работе с CPU.

        • resourcesManagement.vpa.cpu.limitRatio
          число

          Коэффициент расчета ограничений использования CPU относительно запросов (limits/requests).

          Применяется для расчета начальных ограничений использования CPU для пода (CPU limits).

          Если параметр указан, то VPA, при пересчете запросов CPU (CPU requests) будет пересчитывать ограничения использования CPU (CPU limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).

        • resourcesManagement.vpa.cpu.max

          Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests).

          По умолчанию: 2

        • resourcesManagement.vpa.cpu.min

          Минимальное значение, которое может выставить VPA для запроса CPU (CPU requests).

          По умолчанию: 50m

      • resourcesManagement.vpa.memory
        объект

        Настройки VPA при работе с памятью.

        • resourcesManagement.vpa.memory.limitRatio
          число

          Коэффициент расчета ограничений использования памяти относительно запросов (limits/requests).

          Применяется для расчета начальных ограничений использования памяти для пода (memory limits).

          Если параметр указан, то VPA, при пересчете запросов памяти (memory requests) будет пересчитывать ограничения использования памяти (memory limits) сохраняя указанное соотношение ограничений к запросам (limits/requests).

        • resourcesManagement.vpa.memory.max

          Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests).

          По умолчанию: 2Gi

        • resourcesManagement.vpa.memory.min

          Минимальное значение, которое может выставить VPA для запроса к памяти (memory requests).

          По умолчанию: 256Mi

      • resourcesManagement.vpa.mode
        строка

        Режим работы VPA.

        По умолчанию: "Auto"

        Допустимые значения: Initial, Auto

  • retentionPeriodHours
    целочисленный

    Сколько часов логи будут храниться, прежде чем будут удалены.

    По умолчанию: 168

  • storageClass

    Имя storageClass’а, который использовать.

    Если не указано, используется StorageClass существующей PVC Loki, а если PVC пока нет, используется или глобальный StorageClass, или global.discovery.defaultStorageClass, а если и их нет, данные сохраняются в emptyDir.

    global.discovery.defaultStorageClass применяется только при включении модуля, смена StorageClass по умолчанию в кластере не приведет к перезаказу диска.

    false — принудительное использование emptyDir. Удалить старый PVC и рестартануть под придется вручную.

    ОСТОРОЖНО! При указании этой опции в значение, отличное от текущего (из существующей PVC), диск Loki будет перезаказан, а все данные удалены.

    Примеры:

    storageClass: false
    
    storageClass: default
    
  • storeSystemLogs
    булевый

    Сохранять логи из пространства имен d8-* в loki.

    Для работы необходим включенный модуль log-shipper.

    По умолчанию: true

  • tolerations
    массив объектов

    Структура, аналогичная spec.tolerations пода Kubernetes.

    Если ничего не указано или указано false, будет использоваться автоматика.

    • tolerations.effect
      строка
    • tolerations.key
      строка
    • tolerations.operator
      строка
    • tolerations.tolerationSeconds
      целочисленный
    • tolerations.value
      строка

Пример конфигурации

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: loki
spec:
  settings:
    storageClass: ceph-csi-rbd
    diskSizeGigabytes: 10
    retentionPeriodHours: 48
  enabled: true
  version: 1