Назад | Перейти на главную страницу

WEBRTC MCU / SFU внутри кубернетов - диапазоны портов?

Я использую Янус-шлюз в качестве медиа-сервера webrtc для групповых видеозвонков. Раньше я развертывал его на одном узле с помощью docker-compose, но теперь я хочу иметь возможность масштабировать его по горизонтали. Для этого я пытаюсь использовать кубернеты, но сталкиваюсь с двумя проблемами:

1: Указание диапазона портов для отображения для медиа-сервера. Поскольку медиа-серверу требуется диапазон портов для работы, что я смог сделать в docker-compose с помощью следующего кода

janus-gateway:
 build: ./gateway
 image: janus-gateway-image
 restart: always
 ports:
   -  8088:8088
   -  8188:8188
   -  7088:7088
   -  "10000-10200:10000-10200/udp"
 networks:
  - back-tier

Но альтернативы этому в кубернетах я найти не могу. Как я могу выставить диапазон портов с помощью кубернетов.

2: Как я могу подключиться из моего приложения nodejs к определенному экземпляру шлюза. Итак, скажем, два экземпляра шлюза работают, прямо сейчас, когда пользователь подключается к приложению, я подключаю его к одному из двух запущенных экземпляров и сохраняю его в redis, и проверяю, что любой запрос от этого пользователя передается этому конкретному экземпляру . Как я могу подключиться к конкретной реплике с узла? Также получаете список реплик?

я проверил Эта проблема на kuebernetes, но это еще не решено. Есть ли обходной путь для этого?

Как я могу выставить диапазон портов с помощью кубернетов.

Краткий ответ: нельзя.

Чтобы уточнить немного больше, поскольку Йоргос Саслис упомянутый Вот.

проблема в том, что - учитывая текущее состояние Docker - кажется, что вам НЕ следует даже пытаться открыть большое количество портов. В любом случае рекомендуется использовать хост-сеть из-за накладных расходов, связанных с большими диапазонами портов. (он добавляет как задержку, так и потребляет значительные ресурсы - например, см. https://www.percona.com/blog/2016/02/05/measuring-docker-cpu-network-overhead/ )

Я думаю, что VoIP - это не то, что нужно внедрять в Kubernetes. медиасерверы имеют довольно состояние и требуют динамического открытия новых подключений, в то время как Kubernetes в основном * не имеет состояния.

Это будет сильно зависеть от реальной архитектуры, которую вы хотите. Но я предполагаю, что вы хотите открыть один порт и позволить K8s выполнять масштабирование и маршрутизацию с локальной балансировкой. Если требуется отслеживание состояния соединений портов, K8s не является решением для использования.