STUN/TURN в Kubernetes
Вы хотите принять входящий RTP-трафик по UDP в приватном кластере Kubernetes. Что делать?
Динамические порты для VoIP (RTP) в приватном кластере — интересная задачка. Особенно если ноды без публичных IP, а трафик нужно принять снаружи. А еще в Kubernetes открыть диапазон портов для сервиса можно, например, с hostNetwork: true, потому что NodePort не поддерживает диапазоны портов. Кстати, с 2016 года висит issue — диапазоны портов на NodePort так и не подвезли.
🚀 Тут выручают STUN и TURN.
☎️ VoIP-сессии (RTP) используют диапазон портов, а NAT и фаерволы могут это осложнить. STUN помогает клиентам узнать свой публичный IP и порт через NAT. TURN берёт на себя роль релея, если прямой путь заблокирован.
🌎 STUN: клиент отправляет запрос на STUN-сервер, получает ответ с внешним IP и портом. Потом сам решает, как отправлять пакеты. Быстро и просто, но не работает с симметричным NAT.
🔗 TURN: клиент подключается к TURN-серверу, тот выделяет порт и перенаправляет трафик.
🔧 Есть coturn — проверенный opensource-сервер для STUN и TURN. Разворачиваете с двумя сетевыми интерфейсами (приватным и публичным), настраиваете порты (обычно 3478 для STUN, плюс релейные для TURN), добавляете TLS для защиты. Поды VoIP-сервиса в K8s цепляются к нему через конфиги.
✅ STUN хорош для простых сценариев, TURN — для сложных. В приватном K8s они спасают RTP от проблем с NAT и фаерволами. Coturn выручает, если хочется свой сервер вместо облачных сервисов.
Вы хотите принять входящий RTP-трафик по UDP в приватном кластере Kubernetes. Что делать?
Динамические порты для VoIP (RTP) в приватном кластере — интересная задачка. Особенно если ноды без публичных IP, а трафик нужно принять снаружи. А еще в Kubernetes открыть диапазон портов для сервиса можно, например, с hostNetwork: true, потому что NodePort не поддерживает диапазоны портов. Кстати, с 2016 года висит issue — диапазоны портов на NodePort так и не подвезли.
☎️ VoIP-сессии (RTP) используют диапазон портов, а NAT и фаерволы могут это осложнить. STUN помогает клиентам узнать свой публичный IP и порт через NAT. TURN берёт на себя роль релея, если прямой путь заблокирован.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Support port ranges or whole IPs in services · Issue #23864 · kubernetes/kubernetes
There are several applications like SIP apps or RTP which needs a lot of ports to run multiple calls or media streams. Currently there is no way to allow a range in ports in spec. So essentially I ...
1👍4❤3 3🦄2
А вы знали, что
kubectl explain выдает полную спеку ресурса с описанием всех параметров?Например
kubectl explain pods.spec.containers--recursive, то покажет все возможные поля с описанием.
А так же, есть плагин https://github.com/keisku/kubectl-explore
What’s lacking in the original kubectl-explain?
- kubectl explain requires knowing in advance the resource name/fields.
- kubectl explain requires typing the accurate path to the resource name/field, which is a tedious and typo-prone.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9 3❤1
Linux-поды теперь поддерживают user namespaces. Безопасность через ядро для ограничения привилегий.
Stateful-процессы масштабируются вверх без остановки. Увеличение ресурсов без перезапусков.
Альфа-фичу из 1.26 (KEP-3503) убирают — containerd не поддерживает это, как выяснилось.
Картинку сгенерил с помощью ChatGPT с четвертого раза своим дегенским промптом
Please open Telegram to view this post
VIEW IN TELEGRAM
6 5 2👍1 1
Forwarded from Лемана Тех
Как сократить время разработки дата-продуктов в 1,5 раза? 🤔
Рассказываем в карточках, как и зачем мы создали централизованную MLOps-платформу.
Полный доклад с HighLoad++ от Елизаветы Гавриловой можно посмотреть здесь👀
Рассказываем в карточках, как и зачем мы создали централизованную MLOps-платформу.
Полный доклад с HighLoad++ от Елизаветы Гавриловой можно посмотреть здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2 3👎2🦄2
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 syncgit — ClickOps + GitOps без дрифта
Любопытная тула для обьединения ClickOps и GitOps подходов к управлению ресурсами в Kubernetes.
🙏 Теперь можно делать изменения напрямую в кластере, не переживая, что тот же ArgoCD отклонит эти изменения, так как они сразу попадут в git-репозиторий, а оттуда через ArgoCD синхронизируются в кластере. Таким образом мы исключаем configration drift, оставляя возможность ручного управления.
📖 подробнее объяснение концепции тут и как это работает с ArgoCD тут
Любопытная тула для обьединения ClickOps и GitOps подходов к управлению ресурсами в Kubernetes.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5👍3 2
«Экспресс 42» запустил ежегодный опрос про состояние DevOps. Цель — собрать 4000+ ответов от инженеров, разработчиков, админов, тестировщиков и IT-руководителей.
- Доступ к результатам исследования.
- Шанс выиграть мерч, промокоды или билеты на Highload++ и DevOpsConf.
Если вы связаны с DevOps — пройдите опрос. Чем больше ответов, тем точнее картина.
Please open Telegram to view this post
VIEW IN TELEGRAM
1 1 1 1
daily и size — не работают вместе?В logrotate нельзя просто заюзать
daily и size вместе — они взаимоисключающие. Size плюёт на время ротации, а daily не смотрит на размер логов. Итог? Логи либо растут, либо ротируются когда не нужно.maxsize <size> -- ротирует логи, если они перевалили за размер, учитывая время (daily, weekly, monthly). Так мы получим что хотели.maxsize size: Log files are rotated when they grow bigger than size bytes even before the specified time interval. Both size and timestamp are considered.Один гений решил не читать доки — дальше вы знаете что произошло. 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍8❤2👎1 1
Ранее уже писал про шаринг GPU в Kubernetes и репостил про сложности мониторинга. Сейчас наткнулся на более зрелый проект — k8s-vGPU-scheduler, который теперь называется Project HAMi (Heterogeneous AI Computing Virtualization Middleware).
- Time slicing — просто в конфигурации, но нет изоляции и плохо с производительностью.
- MPS — поддерживает параллельные вычисления, но снова нет изоляции.
- MIG — есть изоляция, но нужна статичная конфигурация ноды, и работает только на дорогих картах.
- vGPU — платное, требует виртуализации, не вписывается в kubernetes-native подход.
- Использование vGPU с любым значением памяти
- Гибкая конфигурация нагрузок: тип карты, affinity и т.д.
- Метрики GPU на уровне контейнеров с готовыми дашбордами
- Динамический MIG — без ребутов и статических настроек
- Работает с любыми видеокартами, не только A100
- Поддержка NVLink уже на подходе
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍4❤2🦄1
– argocd-server теперь один бинарник
– убрали redis
– добавили lua-плагины
– много упрощений вокруг rbac
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍8❤2🦄2 2