Настройка службы Kubernetes в качестве устройства UPnP

Проблема

Я установил двухузловой кубернетный кластер с двумя узлами, сконфигурированный с weavenet и Metallb . Я хочу, чтобы службы, размещенные в этом кластере, обнаруживали устройства UPnP в моей домашней сети и взаимодействовали с ними. Я считаю, что для этого нужно настроить пакеты обнаружения UPnP для повторной многоадресной передачи в мою домашнюю сеть. Как правильно настроить повторную многоадресную передачу между виртуальной сетью Weavenet и локальной сетью?

Моя сеть

  1. Моя домашняя сеть находится на 192.168.1.0/24 , с главным и подчиненным узлами.
  2. Kubernetes развертывает модули, используя настройку Weavenet по умолчанию, которая размещает все узлы где-то в оверлейная сеть 10.32.0.1/12 .
  3. У меня есть возможность развертывать службы с помощью Metallb LoadBalancer, который предоставит IP-адрес LoadBalancer где-то в пределах 192.168.2.192/26 .

То, что я пробовал

, я могу выполнить тестовый сценарий обнаружения , который обнаруживает мои устройства UPnP с помощью многоадресной рассылки ( 239.255.255.250:1900 ) с любого компьютера в моей домашней сети. После развертывания в кластере (, например, ) устройства UPnP больше не обнаруживаются. Я могу видеть пакеты UPnP из других модулей в кластере, но не с моих компьютеров, напрямую подключенных к моей домашней сети.

Я считаю, что решение этой проблемы будет включать ретрансляцию пакетов UPnP из weavenet в мою домашнюю сеть и обратное проксирование ответов ... но я не знаю, как сделать что-то подобное с плетением сети. Как я могу настроить любой вид службы / развертывания / модуля / сети, который будет взаимодействовать с моими устройствами UPnP так же, как мой тестовый сценарий при использовании сети хоста?

3
задан 10 October 2018 в 03:54
1 ответ

Sự cố : Các chương trình phát sóng uPnP UDP đến từ địa chỉ nội bộ của nhóm đang bị nút loại bỏ trước khi nó đi vào mạng gia đình của bạn.

tức là. gói sẽ trông như thế nào IP 10.32.0.x.45196> 239.255.255.250.1900: UDP, độ dài 215

Theo tài liệu tại https://kubernetes.io/docs/tutorials/services/source-ip /

type: LoadBalancer - sẽ tự động tạo nguồn NAT cho nút IP .

type: NodePort - sẽ tự động tạo nguồn NAT cho nút pod IP.

Sử dụng NodePort với hostNetwork sẽ liên kết NodePort của nhóm với Node IP, do đó UDP phát sẽ đến từ một địa chỉ hợp pháp.

Hạn chế đối với thiết lập này:

  • Mỗi lần chỉ có thể chạy một phiên bản của nhóm uPnP. Giả sử một mạng gia đình thì điều này là đủ. Điều này là do ánh xạ trực tiếp đến mạng máy chủ.
  • NodePorts chỉ có thể hiển thị các cổng không có đặc quyền trong dải 30000 - 32767.

Giải pháp :

Xem terrarium-service-udp.yaml để biết phân bổ NodePort .

Xem khai báo terrarium-deploy.yaml để biết hostNetwork.

terrarium-service-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-deploy.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

Tôi có cấu hình hoạt động cho minidlna. Nếu bạn cần nó để so sánh,cho tôi biết và tôi sẽ tải lên GitHub.

1
ответ дан 3 December 2019 в 07:21

Теги

Похожие вопросы