Я установил двухузловой кубернетики без покрытия кластер настроен с Weavenet и Metallb. Я хочу, чтобы службы, размещенные в этом кластере, обнаруживали устройства UPnP в моей домашней сети и взаимодействовали с ними. Я считаю, что для этого необходимо настроить пакеты обнаружения UPnP для повторной многоадресной передачи в мою домашнюю сеть. Как правильно настроить повторную многоадресную передачу между виртуальной сетью Weavenet и локальной сетью?
192.168.1.0/24
, как с ведущим, так и с ведомым узлами.10.32.0.1/12
наложенная сеть.192.168.2.192/26
.Я могу выполнить сценарий обнаружения тестов который обнаруживает мои устройства UPnP с помощью многоадресной рассылки (239.255.255.250:1900
) с любого компьютера в моей домашней сети. После развертывания в кластере (как это) устройства UPnP больше не обнаруживаются. Я могу видеть пакеты UPnP от других модулей в кластере, но не с моих компьютеров, напрямую подключенных к моей домашней сети.
Я считаю, что решение этой проблемы будет включать ретрансляцию пакетов UPnP из Weavenet в мою домашнюю сеть и обратное проксирование ответов ... но я не знаю, как сделать что-то подобное с Weave Net. Как я могу настроить любой вид службы / развертывания / модуля / сети, который будет взаимодействовать с моими устройствами UPnP таким образом мой тестовый сценарий делает при использовании сети хоста?
Проблема: UDP-широковещательные сообщения uPnP, поступающие с внутреннего адреса модуля, отбрасываются узлом до того, как они попадут в вашу домашнюю сеть.
т.е. пакет будет выглядеть как IP 10.32.0.x.45196 > 239.255.255.250.1900: UDP, length 215
Согласно документам на https://kubernetes.io/docs/tutorials/services/source-ip/
тип: LoadBalancer - автоматически подключит NAT к узел IP.
тип: NodePort - автоматически отправит NAT на узел стручок IP.
Используя NodePort с участием hostNetwork свяжет NodePort модуля с IP-адресом узла, поэтому широковещательная передача UDP будет происходить с юридического адреса.
Ограничения этой настройки:
Решение:
См. Terrarium-service-udp.yaml для распределения NodePort.
См. Объявление hostNetwork в terrarium-deployment.yaml.
террариум-сервис-udp.yaml:
kind: Service
metadata:
annotations:
metallb.universe.tf/allow-shared-ip: terrarium
creationTimestamp: null
labels:
io.kompose.service: terrarium
name: terrarium-udp
spec:
ports:
- name: '32767'
port: 32767
protocol: UDP
targetPort: 54321
- name: '31900'
port: 31900
protocol: UDP
targetPort: 1900
selector:
io.kompose.service: terrarium
type: NodePort
terrarium-deployment.yaml:
kind: Deployment
metadata:
annotations:
creationTimestamp: null
labels:
io.kompose.service: terrarium
name: terrarium
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: terrarium
spec:
hostNetwork: true
containers:
- image: docker.lan/terrarium
name: terrarium
ports:
- containerPort: 80
- containerPort: 32767
protocol: UDP
- containerPort: 1900
protocol: UDP
resources: {}
restartPolicy: Always
Имею рабочую конфигурацию для minidlna. Если он вам нужен для сравнения, дайте мне знать, и я загрузлю его на GitHub.