Передача логов кластера Yandex Managed Service for Kubernetes в Cloud Logging
Вы можете отправлять логи кластера 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 с планом инфраструктуры.
-
Удалите конфигурационный файл
k8s-cluster-with-master-logging.tf
. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Все ресурсы, которые были описаны в конфигурационном файле
k8s-cluster-with-master-logging.tf
, будут удалены. -
Отправка логов подов и сервисов с помощью Fluent Bit
Чтобы настроить передачу логов подов и сервисов Yandex Managed Service for Kubernetes в Yandex 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-образы.
Совет
Вы можете использовать один и тот же сервисный аккаунт для обеих операций.
-
Создайте группы безопасности для кластера 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.
-
Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
-
Укажите в файле конфигурации:
- Идентификатор каталога.
- Версию Kubernetes для кластера Managed Service for Kubernetes и групп узлов.
- Имя сервисного аккаунта для ресурсов и узлов Managed Service for Kubernetes.
- Имя лог-группы Cloud Logging.
-
Выполните команду
terraform init
в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Установите и настройте 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
-
Создайте секрет, содержащий ключ сервисного аккаунта:
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
-
Укажите параметры трансляции логов в блоке
data.output-elasticsearch.conf
файла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
Проверьте результат
Проверьте передачу логов подов и сервисов 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
, будут удалены. -