CDN в kubernetes

Pavel P.

New Member
Доброго времени суток.

Искал информацию по поводу развёртывания WCS в kubernetes, нашёл только второстепенные упоминания в нескольких тредах. Потому задам интересующие вопросы отдельно.

Есть ли какие-то данные по поводу поддержки WCS CDN в k8s и сопутствующего автомасштабирования? Какие-то конкретные решения или предложения, соответствующие материалы? Какие решения лицензирования могут подойти в подобных обстоятельствах и какие ограничения они накладывают?
 

Max

Administrator
Staff member
Добрый день.
Мы тестировали WCS CDN в AWS и Google Cloud:
Настройка балансировки нагрузки с масштабированием при помощи AWS ELB
Настройка балансировки нагрузки с масштабированием в GCP
Для AWS также есть заготовка шаблона для CloudFormation: Развертывание WCS при помощи CloudFormation
По лицензированию: можно использовать один ключ на всю CDN, в этом случае биллинг посчитает помесячную оплату, исходя из количества серверов, которые работали в единицу времени: Биллинг. Это касается любых инстансов, кроме AWS с почасовой оплатой, т.к. в этом случае работает биллинг Amazon и считает инстансы и рабочие часы по своим правилам.
 

Pavel P.

New Member
А по поводу конкретно kubernetes? Решение не тестировалось, нет информации по поводу его поддержки? Если так, то намечаются ли какие-то изменения в этом направлении? Планируете ли вы поддержку решений на основе кластеров k8s?
 

Max

Administrator
Staff member
У нас есть официальный образ в докере WCS в Docker, но в Kubernetes мы его не тестировали. Также необходимо учесть, что при развертывании контейнеров в докере для WebRTC (который является многопортовым протоколом, и используемый набор портов достаточно велик, в отличие от RTMP, RTSP или HLS) есть определенные сложности, а при запуске на одном сервер нескольких контейнеров рекомендуется привязывать их к определенным ядрам CPU: Как использовать Docker для WebRTC в продакшене?
Кроме того, мы не рекомендуем транскодинг в Docker контейнере в продакшне, а клиенты, использующие Docker для записи на диск, сталкиваются со снижением производительности дискового ввода/вывода случайным образом.
Выглядит так, что в продакшне для WebRTC лучше всего использовать один контейнер WCS на один серверный инстанс, без транскодинга и записи. Если Ваш кейс укладывается в такие ограничения, мы создадим тикет и протестируем его.
 

Max

Administrator
Staff member
Провели тесты кластера Kubernetes.
К сожалению, из-за того, что при описании контейнера нет возможности указать произвольный диапазон портов, WebRTC не работает в контейнерах k8s. Таким образом, CDN в кластере не будет работать: узлы смогут обмениваться только сигналингом через фиксированный порт, но не передавать данные через произвольные медиапорты.
Однако, можно запустить публикацию по RTMP и проигрывание как RTMP или HLS. С учетом ограничений, озвученных выше, получается, что решение на базе k8s непригодно для трансляции в реальном времени.
 
Top