Skip to content

Руководство администратора⚓︎

Во всех описанных командах используется утилита kubectl, позволяющая работать с кластером Kubernetes.

Запросы к Kubernetes сопровождаются флагом -n [имя неймспейса], указывающим, в каком неймспейсе искать указанные ресурсы. Будем предполагать, что для ядра и для модулей FlowMaster созданы различные неймспейсы, поэтому будем обращаться к неймспейсу flowmaster для ресурсов ядра FlowMaster и неймспейсу flowmaster-modules для ресурсов модулей FlowMaster.

Для более удобного администрирования Kubernetes рекомендуем использовать утилиту k9s, предоставляющую консольный псевдографический интерфейс для управления Kubernetes. Все описанные ниже команды можно выполнить средствами k9s.

Просмотр списка запущенных процессов⚓︎

Список запущенных процессов можно просмотреть не только в веб-интерфейсе FlowMaster, но и через интерфейс Kubernetes. Для этого можно запросить список сущностей Workflow, создаваемых в Kubernetes для каждого процесса:

kubectl -n flowmaster-modules get wfs

Здесь будут отображены статусы процессов.

Для получения информации о батчевых процессах подойдет команда:

kubectl -n flowmaster-modules get bwfs

Для получения информации о регламентных процессах:

kubectl -n flowmaster-modules get regls

Для получения информации о хостах, на которых развернуты гейтвеи FlowMaster:

kubectl -n flowmaster-modules get gws

Для отладки может быть полезно получить манифест конкретного процесса. Для этого выполните:

kubectl -n flowmaster-modules get wf [имя Workflow процесса] -o yaml

(Для каждой из перечисленных сущностей команда get <название сущности (bwf/regl/gw)> так же доступна)

Просмотр списка запущенных модулей⚓︎

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

kubectl -n flowmaster-modules get mods

Имя каждого модуля начинается с имени процесса, к которому он принадлежит. Далее следует идентификатор типа модуля и порядковый номер модуля в процессе. Кроме этого выводится:

  • количество обработчиков (реплик) модуля
  • количество задач, ожидающих обработки данным модулем
  • количество готовых к работе (или работающих) обработчиков модуля
  • статус модуля

Для каждого модуля создаётся Kubernetes-сущность Deployment в неймспейсе для модулей FlowMaster. В зависимости от количества обработчиков такой деплоймент может запускать несколько подов с контейнером модуля.

Если поды модулей расположены в отдельном неймспейсе, для перечисления подов всех модулей (а также их гейтвеев) выполните команду:

kubectl -n flowmaster-modules get po

Имя каждого пода начинается с названия его модуля и имеет некоторый суффикс, идентифицирующий конкретный под.

В каждом поде выполняются как минимум 2 контейнера: непосредственно контейнер модуля, выполняющий прикладные задачи, и сайдкар, обеспечивающий получение задач из очередей RabbitMQ, выполнение трансформаций данных, взаимодействие с DWH API и передачу данных в следующие модули. Прикладных контейнеров может быть и несколько, в зависимости от модуля.

Чтение логов модулей⚓︎

Чтобы вывести логи конкретного пода модуля, выполните команду:

kubectl -n flowmaster-modules logs [имя пода модуля]

В консоль будут выведены последние логи всех контейнеров пода модуля к данному моменту. К команде можно добавить флаг -f, чтобы продолжать выводить новые логи в реальном времени.

Для более удобного просмотра логов рекомендуется использовать утилиту k9s: она позволяет выводить на одном экране логи всех подов одного деплоймента. Это может быть полезно для одновременного просмотра логов всех обработчиков одного модуля.

Перезапуск модуля или его обработчика⚓︎

Для перезапуска одного обработчика модуля удалите его под: новый под будет запущен средствами Kubernetes автоматически. Для этого выполните команду:

kubectl -n flowmaster-modules delete po [имя пода модуля]

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

Для перезапуска деплоймента выполните:

kubectl -n flowmaster-modules rollout restart deploy [имя деплоймента модуля]

Для удаления деплоймента выполните:

kubectl -n flowmaster-modules delete deploy [имя деплоймента модуля]

Администрирование ядра FlowMaster⚓︎

Для взаимодействия с компонентами ядра FlowMaster можно использовать те же команды, что и для модулей: получение списка подов с помощью kubectl get po, чтение логов с помощью kubectl logs, перезапуск с помощью kubectl delete po. Помните, что нужно указывать имя неймспейса с помощью флага -n: если ядро FlowMaster установлено в неймспейсе flowmaster, для получения списка подов ядра используйте команду:

kubectl -n flowmaster get po

Просмотр очередей задач процессов⚓︎

Очереди задач можно просмотреть в веб-интерфейсе RabbitMQ или Pulsar. В RabbitMQ такой веб-интерфейс предустановлен, доступ к нему возможен на 15672 порту машины RabbitMQ. Для Pulsar интерфейс устанавливается дополнительно (подробнее в документации Pulsar).

Для каждого модуля создаётся собственная входная очередь. Модули, выходы которых в графе процесса связаны с входом данного модуля, могут создавать задачи, которые будут появляться в очереди данного модуля. Сам данный модуль по готовности будет забирать задачи из своей очереди и обрабатывать их. Если у модуля есть несколько обработчиков, задачи будут распределяться между ними по степени их загруженности.

По количеству задач в очередях модулей можно определить, какой модуль стал "бутылочным горлом" производительности процесса - такому модулю стоит добавить обработчиков или обратить внимание на его логи: возможно, в его работе появились проблемы.