Перейти к основному содержимому
Логи в кластере Managed Kubernetes
Последнее изменение:

Логи в кластере Managed Kubernetes

В кластерах Managed Kubernetes можно получать логи — логи кластера, логи контейнеров и аудитные логи.

В логах кластера отображаются события, которые происходят с кластером. Например, создание кластера, изменение групп нод, обновление сертификатов и версии. Если запрос был выполнен автоматически, например, произошло обновление сертификатов по расписанию, то это действие тоже попадет в логи. Вы можете посмотреть логи кластера в панели управления.

В логи контейнеров попадают события, которые происходят с контейнерами. Например, создание и удаление контейнера. Файлы логов контейнеров хранятся в каталоге /var/log/pods/ или /var/log/containers. Логи отдельного контейнера можно посмотреть с помощью kubectl logs <container_name>, где <container_name> — имя контейнера. Если в кластере Managed Kubernetes много контейнеров, вы можете настроить получение логов контейнеров через Filebeat.

В аудитных логах отображаются события, которые происходят в кластере. Например, в подах или сервисах. Эти события могут быть инициированы пользователями, приложениями или Control Plane. Список событий, которые попадают в логи, и параметры этих событий зависят от политики (audit policy). Политику, которая применяется для аудитных логов Managed Kubernetes, можно посмотреть в документации Selectel на сайте GitHub.

Аудитные логи можно хранить в системе хранения и анализа логов. Например, во внешних хранилищах данных (например, Elasticsearch или Stackdriver) или в SIEM-системе (например, MaxPatrol SIEM или KUMA). Чтобы получать аудитные логи из кластера Managed Kubernetes в системе хранения и анализа логов, настройте интеграцию.

Посмотреть логи кластера

  1. В панели управления перейдите в раздел Облачная платформаKubernetes.

  2. Откройте страницу кластера → вкладка Логи.

  3. Посмотрите статус событий кластера в строке события → столбец Статус.

    IN_PROGRESSСобытие выполняется
    IN_QUEUEСобытие в очереди. Ожидается завершение события со статусом IN_PROGRESS
    CANCELEDСобытие отменено
    ERRORПроизошла ошибка. Если причина ошибки — нехватка квот в проекте, увеличьте квоты. Если причина не указана, создайте тикет
    DONEСобытие успешно завершилось

Настроить получение логов контейнеров через Filebeat

Filebeat по умолчанию настроен на работу с Docker. В Selectel вместо Docker в качестве среды исполнения контейнеров (CRI) используется containerd.

Чтобы настроить механизм получения метаданных логов через Filebeat, используйте конфигурационный файл:

filebeat.inputs:
- type: container
fields_under_root: true
paths:
- "/var/log/containers/*.log"
processors:
- add_kubernetes_metadata:
host: ${NODE_NAME}
in_cluster: true
default_matchers.enabled: false
matchers:
- logs_path:
logs_path: "/var/log/containers/"

Настроить интеграцию с системой хранения и анализа логов

Аудитные логи доступны в кластерах с версией Kubernetes 1.28 и выше. В кластерах Managed Kubenretes на облачных серверах вы можете обновить версию кластера. Во время обновления версии аудитные логи недоступны.

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

  1. Включите аудитные логи — при создании кластера или в существующем кластере.
  2. Подключитесь к кластеру.
  3. Настройте экспорт аудитных логов в систему хранения и анализа логов.

1. Включить аудитные логи в существующем кластере

  1. В панели управления перейдите в раздел Облачная платформаKubernetes.
  2. Откройте страницу кластера → вкладка Настройки.
  3. В блоке Логирование включите тумблер Аудитные логи.

2. Подключиться к кластеру

Используйте инструкцию Подключиться к кластеру для нужной операционной системы.

3. Настроить экспорт аудитных логов в систему хранения и анализа логов

Аудитные логи начнут передаваться в систему хранения и анализа логов после создания объекта Secret.

  1. Создайте yaml-файл с манифестом для объекта Secret:

    apiVersion: v1
    kind: Secret
    metadata:
    name: mks-audit-logs
    data:
    host: <host>
    port: <port>
    username: <username>
    password: <password>
    ca.crt: <ca_certificate>

    Укажите:

    • <host> — DNS- или IP-адрес системы хранения и анализа логов;
    • <port> — порт для подключения к системе хранения и анализа логов;
    • опционально: <username> — имя пользователя системы хранения и анализа логов;
    • опционально: <password> — пароль пользователя системы хранения и анализа логов;
    • опционально: <ca_certificate> — сертификат из приватного центра сертификации (CA). Если для подключения используется Let's Encrypt сертификат, этот параметр не нужно заполнять.
  2. Примените манифест и создайте объект Secret в пространстве имен kube-system:

    kubectl apply -f <secret.yaml> --namespace=kube-system

    Укажите <secret.yaml> — имя yaml-файла с манифестом для создания нового объекта Secret.

  3. Проверьте, что объект Secret создан:

    kubectl get secret mks-audit-logs --output=yaml --namespace=kube-system