Руководство администратора⚓︎
Во всех описанных командах используется утилита kubectl
, позволяющая работать с кластером Kubernetes.
Запросы к Kubernetes сопровождаются флагом -n [имя неймспейса]
, указывающим, в каком неймспейсе искать указанные ресурсы. Будем предполагать, что для ядра и для модулей FlowMaster созданы различные неймспейсы, поэтому будем обращаться к неймспейсу flowmaster
для ресурсов ядра FlowMaster и неймспейсу flowmaster-modules
для ресурсов модулей FlowMaster.
Для более удобного администрирования Kubernetes рекомендуем использовать утилиту k9s, предоставляющую консольный псевдографический интерфейс для управления Kubernetes. Все описанные ниже команды можно выполнить средствами k9s
.
Просмотр списка запущенных процессов⚓︎
Список запущенных процессов можно просмотреть не только в веб-интерфейсе FlowMaster, но и через интерфейс Kubernetes. Для этого можно запросить список сущностей Workflow, создаваемых в Kubernetes для каждого процесса:
Здесь будут отображены статусы процессов.
Для получения информации о батчевых процессах подойдет команда:
Для получения информации о регламентных процессах:
Для получения информации о хостах, на которых развернуты гейтвеи FlowMaster:
Для отладки может быть полезно получить манифест конкретного процесса. Для этого выполните:
(Для каждой из перечисленных сущностей команда get <название сущности (bwf/regl/gw)>
так же доступна)
Просмотр списка запущенных модулей⚓︎
Чтобы просмотреть список модулей, запущенных во всех процессах, выполните команду:
Имя каждого модуля начинается с имени процесса, к которому он принадлежит. Далее следует идентификатор типа модуля и порядковый номер модуля в процессе. Кроме этого выводится:
- количество обработчиков (реплик) модуля
- количество задач, ожидающих обработки данным модулем
- количество готовых к работе (или работающих) обработчиков модуля
- статус модуля
Для каждого модуля создаётся Kubernetes-сущность Deployment в неймспейсе для модулей FlowMaster. В зависимости от количества обработчиков такой деплоймент может запускать несколько подов с контейнером модуля.
Если поды модулей расположены в отдельном неймспейсе, для перечисления подов всех модулей (а также их гейтвеев) выполните команду:
Имя каждого пода начинается с названия его модуля и имеет некоторый суффикс, идентифицирующий конкретный под.
В каждом поде выполняются как минимум 2 контейнера: непосредственно контейнер модуля, выполняющий прикладные задачи, и сайдкар, обеспечивающий получение задач из очередей RabbitMQ, выполнение трансформаций данных, взаимодействие с DWH API и передачу данных в следующие модули. Прикладных контейнеров может быть и несколько, в зависимости от модуля.
Чтение логов модулей⚓︎
Чтобы вывести логи конкретного пода модуля, выполните команду:
В консоль будут выведены последние логи всех контейнеров пода модуля к данному моменту. К команде можно добавить флаг -f
, чтобы продолжать выводить новые логи в реальном времени.
Для более удобного просмотра логов рекомендуется использовать утилиту k9s
: она позволяет выводить на одном экране логи всех подов одного деплоймента. Это может быть полезно для одновременного просмотра логов всех обработчиков одного модуля.
Перезапуск модуля или его обработчика⚓︎
Для перезапуска одного обработчика модуля удалите его под: новый под будет запущен средствами Kubernetes автоматически. Для этого выполните команду:
Для перезапуска всех обработчиков модуля можно перезапустить его деплоймент (тогда модули будут перезапускаться по очереди, более аккуратный вариант без даунтайма) или удалить его деплоймент (деплоймент будет пересоздан оператором - более быстрый вариант, но будет присутствовать даунтайм).
Для перезапуска деплоймента выполните:
Для удаления деплоймента выполните:
Администрирование ядра FlowMaster⚓︎
Для взаимодействия с компонентами ядра FlowMaster можно использовать те же команды, что и для модулей: получение списка подов с помощью kubectl get po
, чтение логов с помощью kubectl logs
, перезапуск с помощью kubectl delete po
. Помните, что нужно указывать имя неймспейса с помощью флага -n
: если ядро FlowMaster установлено в неймспейсе flowmaster
, для получения списка подов ядра используйте команду:
Просмотр очередей задач процессов⚓︎
Очереди задач можно просмотреть в веб-интерфейсе RabbitMQ или Pulsar. В RabbitMQ такой веб-интерфейс предустановлен, доступ к нему возможен на 15672 порту машины RabbitMQ. Для Pulsar интерфейс устанавливается дополнительно (подробнее в документации Pulsar).
Для каждого модуля создаётся собственная входная очередь. Модули, выходы которых в графе процесса связаны с входом данного модуля, могут создавать задачи, которые будут появляться в очереди данного модуля. Сам данный модуль по готовности будет забирать задачи из своей очереди и обрабатывать их. Если у модуля есть несколько обработчиков, задачи будут распределяться между ними по степени их загруженности.
По количеству задач в очередях модулей можно определить, какой модуль стал "бутылочным горлом" производительности процесса - такому модулю стоит добавить обработчиков или обратить внимание на его логи: возможно, в его работе появились проблемы.