Передача логов кластера Yandex Managed Service for Kubernetes в Cloud Logging
- Отправка логов мастера Managed Service for Kubernetes в Cloud Logging с помощью master logging
- Отправка логов подов и сервисов с помощью Fluent Bit
- Отправка логов мастера Managed Service for Kubernetes в Cloud Logging с помощью master logging
- Отправка логов подов и сервисов с помощью Fluent Bit
- Перед началом работы
- Установите и настройте Fluent Bit
- Проверьте результат
- Удалите созданные ресурсы
Вы можете отправлять логи кластера Managed Service for Kubernetes в Cloud Logging:
- Для отправки логов мастера Managed Service for Kubernetes используйте настройку
master logging
при создании или изменении кластера. Настройка доступна только через API, CLI и Terraform. - Для отправки логов подов и сервисов используйте приложение Fluent Bit с плагином для Cloud Logging в кластере Managed Service for Kubernetes.
Отправка логов мастера Managed Service for Kubernetes в Cloud Logging с помощью master logging
Чтобы настроить передачу логов мастера Managed Service for Kubernetes в Cloud Logging:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Если у вас еще нет сети, создайте ее.
-
Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Managed Service for Kubernetes и группа узлов.
-
-
Сервисный аккаунт для ресурсов Managed Service for Kubernetes с ролью editor на каталог, в котором создается кластер Managed Service for Kubernetes.
-
Сервисный аккаунт для узлов Managed Service for Kubernetes с ролью container-registry.images.puller на каталог с реестром Docker-образов. От его имени узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.
Совет
Вы можете использовать один и тот же сервисный аккаунт для обеих операций.
-
-
Назначьте сервисному аккаунту для ресурсов роль logging.writer. Она необходима для отправки логов кластером Managed Service for Kubernetes в Cloud Logging.
-
Создайте кластер Managed Service for Kubernetes и группу узлов. При создании кластера Managed Service for Kubernetes укажите ранее созданные сервисные аккаунты для ресурсов и узлов.
-
Настройте группы безопасности для работы кластера Managed Service for Kubernetes.
-
Если у вас еще нет Terraform, установите его.
-
Скачайте файл с настройками провайдера
. Поместите его в отдельную рабочую директорию и укажите значения параметров. -
Скачайте в ту же рабочую директорию файл конфигурации кластера Managed Service for Kubernetes k8s-cluster-with-master-logging.tf
.В этом файле описаны:
- Сеть.
- Подсеть.
- Группы безопасности и правила, необходимые для работы кластера Managed Service for Kubernetes и группы узлов:
- Правила для служебного трафика.
- Правила для доступа к API Kubernetes и управления кластером Managed Service for Kubernetes с помощью
kubectl
через порты 443 и 6443. - Правила для доступа к сервисам из интернета.
- Сервисный аккаунт для ресурсов и узлов Managed Service for Kubernetes и отправки логов кластером в Cloud Logging.
- Кластер Managed Service for Kubernetes.
- Группа узлов Managed Service for Kubernetes.
- Лог-группа Cloud Logging.
-
Укажите в файле конфигурации:
- Идентификатор каталога.
- Версию Kubernetes для кластера Managed Service for Kubernetes и групп узлов.
- Имя сервисного аккаунта для ресурсов и узлов Managed Service for Kubernetes и отправки логов кластером в Cloud Logging.
- Имя лог-группы Cloud Logging.
-
Выполните команду
terraform init
в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Включите настройку master logging
Если вы создавали инфраструктуру вручную, включите настройку master logging
:
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Выполните команду:
yc managed-kubernetes cluster update <имя_кластера> \ --master-logging enabled=true,` `log-group-id=<идентификатор_лог-группы>,` `kube-apiserver-enabled=<отправка_логов_kube-apiserver:_true_или_false>,` `cluster-autoscaler-enabled=<отправка_логов_cluster-autoscaler:_true_или_false>,` `events-enabled=<отправка_событий_Kubernetes:_true_или_false>` `audit-enabled=<отправка_событий_аудита:_true_или_false>
Где:
enabled
— флаг отправки логов.log-group-id
— идентификатор созданной ранее лог-группы, в которую нужно отправлять логи.kube-apiserver-enabled
— флаг отправки логов kube-apiserver .cluster-autoscaler-enabled
— флаг отправки логовcluster-autoscaler
.events-enabled
— флаг отправки событий Kubernetes.audit-enabled
— флаг отправки событий аудита.
Проверьте результат
Проверьте передачу логов мастера Managed Service for Kubernetes в лог-группу Cloud Logging.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера Managed Service for Kubernetes статический публичный IP-адрес, освободите и удалите его.
- Удалите созданные подсети и сети.
- Удалите созданные сервисные аккаунты.
- Удалите лог-группу.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
Отправка логов подов и сервисов с помощью Fluent Bit
Вы можете отправлять логи кластера Managed Service for Kubernetes в Cloud Logging:
- Для отправки логов мастера Managed Service for Kubernetes используйте настройку
master logging
при создании или изменении кластера. Настройка доступна только через API, CLI и Terraform. - Для отправки логов подов и сервисов используйте приложение Fluent Bit с плагином для Cloud Logging в кластере Managed Service for Kubernetes.
Отправка логов мастера Managed Service for Kubernetes в Cloud Logging с помощью master logging
Чтобы настроить передачу логов мастера Managed Service for Kubernetes в Cloud Logging:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Если у вас еще нет сети, создайте ее.
-
Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Managed Service for Kubernetes и группа узлов.
-
-
Сервисный аккаунт для ресурсов Managed Service for Kubernetes с ролью editor на каталог, в котором создается кластер Managed Service for Kubernetes.
-
Сервисный аккаунт для узлов Managed Service for Kubernetes с ролью container-registry.images.puller на каталог с реестром Docker-образов. От его имени узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.
Совет
Вы можете использовать один и тот же сервисный аккаунт для обеих операций.
-
-
Назначьте сервисному аккаунту для ресурсов роль logging.writer. Она необходима для отправки логов кластером Managed Service for Kubernetes в Cloud Logging.
-
Создайте кластер Managed Service for Kubernetes и группу узлов. При создании кластера Managed Service for Kubernetes укажите ранее созданные сервисные аккаунты для ресурсов и узлов.
-
Настройте группы безопасности для работы кластера Managed Service for Kubernetes.
-
Если у вас еще нет Terraform, установите его.
-
Скачайте файл с настройками провайдера
. Поместите его в отдельную рабочую директорию и укажите значения параметров. -
Скачайте в ту же рабочую директорию файл конфигурации кластера Managed Service for Kubernetes k8s-cluster-with-master-logging.tf
.В этом файле описаны:
- Сеть.
- Подсеть.
- Группы безопасности и правила, необходимые для работы кластера Managed Service for Kubernetes и группы узлов:
- Правила для служебного трафика.
- Правила для доступа к API Kubernetes и управления кластером Managed Service for Kubernetes с помощью
kubectl
через порты 443 и 6443. - Правила для доступа к сервисам из интернета.
- Сервисный аккаунт для ресурсов и узлов Managed Service for Kubernetes и отправки логов кластером в Cloud Logging.
- Кластер Managed Service for Kubernetes.
- Группа узлов Managed Service for Kubernetes.
- Лог-группа Cloud Logging.
-
Укажите в файле конфигурации:
- Идентификатор каталога.
- Версию Kubernetes для кластера Managed Service for Kubernetes и групп узлов.
- Имя сервисного аккаунта для ресурсов и узлов Managed Service for Kubernetes и отправки логов кластером в Cloud Logging.
- Имя лог-группы Cloud Logging.
-
Выполните команду
terraform init
в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Включите настройку master logging
Если вы создавали инфраструктуру вручную, включите настройку master logging
:
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Выполните команду:
yc managed-kubernetes cluster update <имя_кластера> \ --master-logging enabled=true,` `log-group-id=<идентификатор_лог-группы>,` `kube-apiserver-enabled=<отправка_логов_kube-apiserver:_true_или_false>,` `cluster-autoscaler-enabled=<отправка_логов_cluster-autoscaler:_true_или_false>,` `events-enabled=<отправка_событий_Kubernetes:_true_или_false>` `audit-enabled=<отправка_событий_аудита:_true_или_false>
Где:
enabled
— флаг отправки логов.log-group-id
— идентификатор созданной ранее лог-группы, в которую нужно отправлять логи.kube-apiserver-enabled
— флаг отправки логов kube-apiserver .cluster-autoscaler-enabled
— флаг отправки логовcluster-autoscaler
.events-enabled
— флаг отправки событий Kubernetes.audit-enabled
— флаг отправки событий аудита.
Проверьте результат
Проверьте передачу логов мастера Managed Service for Kubernetes в лог-группу Cloud Logging.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера Managed Service for Kubernetes статический публичный IP-адрес, освободите и удалите его.
- Удалите созданные подсети и сети.
- Удалите созданные сервисные аккаунты.
- Удалите лог-группу.
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy
-
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-
Отправка логов подов и сервисов с помощью Fluent Bit
Чтобы настроить передачу логов подов, сервисов и системных логов узлов Yandex Managed Service for Kubernetes в Yandex Cloud Logging:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Если у вас еще нет сети, создайте ее.
-
Если у вас еще нет подсетей, создайте их в зонах доступности, где будут созданы кластер Managed Service for Kubernetes и группа узлов.
-
Создайте сервисные аккаунты для Managed Service for Kubernetes:
- Сервисный аккаунт для ресурсов Managed Service for Kubernetes с ролью editor на каталог, в котором создается кластер Managed Service for Kubernetes.
- Сервисный аккаунт для узлов Managed Service for Kubernetes с ролью container-registry.images.puller на каталог с реестром Docker-образов. От его имени узлы Managed Service for Kubernetes будут скачивать из реестра необходимые Docker-образы.
Совет
Вы можете использовать один и тот же сервисный аккаунт для обеих операций.
-
Создайте сервисный аккаунт для Cloud Logging с ролями logging.writer и monitoring.editor. Он будет использоваться для работы Fluent Bit.
-
Создайте авторизованный ключ для сервисного аккаунта Cloud Logging и сохраните его в файл
key.json
. -
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Создайте кластер Managed Service for Kubernetes и группу узлов. При создании кластера Managed Service for Kubernetes укажите ранее созданные сервисные аккаунты для ресурсов и узлов и группы безопасности.
-
Если у вас еще нет Terraform, установите его.
-
Скачайте файл с настройками провайдера
. Поместите его в отдельную рабочую директорию и укажите значения параметров. -
Скачайте в ту же рабочую директорию файл конфигурации кластера Managed Service for Kubernetes k8s-cluster-with-log-group.tf
.В этом файле описаны:
-
Сеть.
-
Лог-группа Cloud Logging.
-
Кластер Managed Service for Kubernetes.
-
Группа узлов Managed Service for Kubernetes.
-
Сервисный аккаунт для ресурсов и узлов Managed Service for Kubernetes.
-
Сервисный аккаунт для Cloud Logging.
-
Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
-
Укажите в файле конфигурации:
- Идентификатор каталога.
- Версию Kubernetes для кластера Managed Service for Kubernetes и групп узлов.
- Имя сервисного аккаунта для ресурсов и узлов Managed Service for Kubernetes.
- Имя сервисного аккаунта для Cloud Logging.
- Имя лог-группы Cloud Logging.
-
Выполните команду
terraform init
в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Установите и настройте Fluent Bit
Выберите вариант установки Fluent Bit в зависимости от того, какие логи вы хотите собирать и передавать в Cloud Logging:
- Собирать только логи подов и сервисов Managed Service for Kubernetes.
- Собирать логи подов, сервисов и системные логи узлов Managed Service for Kubernetes.
Установка Fluent Bit для сбора логов подов и сервисов
Установите Fluent Bit согласно инструкции. В настройках приложения укажите идентификатор созданной ранее лог-группы. Идентификатор лог-группы можно получить со списком лог-групп в каталоге.
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Создайте объекты, необходимые для работы Fluent Bit:
kubectl create namespace logging && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-service-account.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-1.22.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-binding-1.22.yaml
-
Создайте секрет, который содержит ключ сервисного аккаунта для Cloud Logging, созданного ранее:
kubectl create secret generic secret-key-json \ --from-file=key.json \ --namespace logging
-
Скачайте конфигурационный файл
config.yaml
:wget https://raw.githubusercontent.com/knpsh/yc-logging-fluent-bit-example/main/config.yaml
-
Укажите идентификатор созданной ранее лог-группы и опционально идентификатор кластера в секции
[OUTPUT]
файлаconfig.yaml
:... output-elasticsearch.conf: | [OUTPUT] Name yc-logging Match * group_id <идентификатор_лог-группы> resource_id <опционально_идентификатор_кластера> message_key log authorization iam-key-file:/etc/secret/key.json ...
Идентификатор лог-группы можно получить со списком лог-групп в каталоге, идентификатор кластера — со списком кластеров в каталоге.
При необходимости укажите дополнительные настройки
Fluent Bit. -
Создайте объекты Fluent Bit:
kubectl apply -f config.yaml
Результат:
configmap/fluent-bit-config created daemonset.apps/fluent-bit created
-
Убедитесь, что под Fluent Bit перешел в состояние
Running
:kubectl get pods -n logging
Установка Fluent Bit для сбора логов подов, сервисов и системных логов узлов
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Скачайте файл конфигурации Fluent Bit systemd.yaml
. -
Для установки Helm-чарта
с Fluent Bit выполните команду:cat key.json | helm registry login cr.yandex --username 'json_key' --password-stdin && \ helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/fluent-bit/fluent-bit \ --version 2.1.7-3 \ --untar && \ helm install -f <путь_к_файлу_systemd.yaml>\ --namespace <пространство_имен> \ --create-namespace \ --set loggingGroupId=<идентификатор_лог-группы> \ --set loggingFilter=<идентификатор_кластера> \ --set-file auth.json=key.json \ fluentbit ./fluent-bit/
Актуальную версию Helm-чарта см. на странице Yandex Cloud Marketplace.
Команда создаст новое пространство имен, необходимое для работы Fluent Bit.
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \
, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Создайте объекты, необходимые для работы Fluent Bit:
kubectl create namespace logging && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-service-account.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-1.22.yaml && \ kubectl create -f https://raw.githubusercontent.com/fluent/fluent-bit-kubernetes-logging/master/fluent-bit-role-binding-1.22.yaml
-
Создайте секрет, который содержит ключ сервисного аккаунта для Cloud Logging, созданного ранее:
kubectl create secret generic secret-key-json \ --from-file=key.json \ --namespace logging
-
Скачайте файл конфигурации Fluent Bit config.yaml
. -
Укажите идентификатор созданной ранее лог-группы в секциях
[OUTPUT]
файлаconfig.yaml
:... output-elasticsearch.conf: | [OUTPUT] Name yc-logging Match kube.* group_id <идентификатор_лог-группы> resource_type {kubernetes/namespace_name} resource_id {kubernetes/pod_name} stream_name {kubernetes/host} message_key log level_key severity default_level INFO authorization iam-key-file:/etc/secret/key.json [OUTPUT] Name yc-logging Match host.* group_id <идентификатор_лог-группы> resource_type systemd resource_id {_SYSTEMD_UNIT} stream_name {_HOSTNAME} message_key MESSAGE level_key SEVERITY default_level INFO authorization iam-key-file:/etc/secret/key.json ...
Идентификатор лог-группы можно получить со списком лог-групп в каталоге.
При необходимости укажите дополнительные настройки
Fluent Bit. -
Создайте объекты Fluent Bit:
kubectl apply -f config.yaml
Результат:
configmap/fluent-bit-config created daemonset.apps/fluent-bit created
-
Убедитесь, что под Fluent Bit перешел в состояние
Running
:kubectl get pods -n logging
Проверьте результат
Проверьте передачу логов подов и сервисов Managed Service for Kubernetes в лог-группу Cloud Logging.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера Managed Service for Kubernetes статический публичный IP-адрес, освободите и удалите его.
- Удалите созданные подсети и сети.
- Удалите созданные сервисные аккаунты.
- Удалите лог-группу.
-
В командной строке перейдите в директорию, в которой расположен актуальный конфигурационный файл Terraform с планом инфраструктуры.
-
Удалите конфигурационный файл
k8s-cluster-with-log-group.tf
. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Все ресурсы, которые были описаны в конфигурационном файле
k8s-cluster-with-log-group.tf
, будут удалены. -