Dynami c URL, который перенаправляет все запросы на выделенный под в Kubernetes - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь использовать кластер kubernetes для выполнения транскодирования в реальном времени видеопотока с нескольких IP-камер по запросу и отправки через веб-сокет на веб-сайт.

Я изменил проект, который я нашел в сети, написанный на go, который принимает веб-запрос с полезной нагрузкой URL-адреса канала rtsp, затем использует URL-адрес для запуска процесса FFMPEG для доступа к потоку и перекодирует его в MPEG и отправляет данные mpeg в другую конечную точку в приложении go, которое запускает соединение с веб-сокетом. Ответ на исходный запрос включает URL-адрес веб-сокета, когда к потоку можно получить доступ. Какой URL-адрес можно поместить в проигрыватель mpeg js и просмотреть в браузере через веб-узел. Основное преимущество - несколько клиентов могут просматривать поток, в то время как с камеры идет только один поток, что сокращает объем мобильных данных. Я также добавлю, что FFMPEG автоматически останавливается через 60 секунд, если для запроса не задана конечная точка.

Проблема, для которой я не могу найти решения, заключается в том, как я могу масштабировать указанное выше приложение в кластере Kubernetes, поэтому, когда я запрашиваю, он делает следующее. -> Проверяет, просматривает ли кто-то уже поток
----> Если кто-то просматривает, значит, соединение модуля и веб-сокета уже создано. Таким образом, URL-адрес, указывающий на модуль, просто нужно отправить обратно клиенту.
----> Если никто не просматривает, необходимо создать модуль потоковой передачи / веб-сокета и после создания URL-адреса, отправленного обратно клиенту для доступа к потоку.

Я посмотрел на входящие контроллеры, возможно, динамическое обновление входящего ресурса является решением или даже возможно с использованием службы me sh, но все это для меня в новинку.

Если у кого-нибудь есть какие-либо данные, чтобы указать мне направление пути, я был бы очень признателен.

Большое спасибо, Люк

1 Ответ

1 голос
/ 18 июня 2020

Динамическая конфигурация вашего приложения K8s звучит как сложное решение с возможными последствиями для производительности из-за очень большого объекта входящих объектов. Возможно, вам придется подумать, как их очистить. Кроме того, для этого требуется клиент K8s в вашем приложении.

Я бы предложил решить эту проблему без помощи ресурсов K8s, просто попросив ваше приложение вернуть HTTP-перенаправление (301) на этот URL-адрес веб-сокета, если это необходимо.

...