Как вы даете каждому узлу в кластере kubernetes случайный номер порта - PullRequest
0 голосов
/ 01 мая 2020

Я работаю с образом сервера Minecraft, чтобы создать кластер наборов состояний, которые все должны иметь случайный внешний порт. Мне сказали, что использование нодпорта сделает эту работу, но не совсем так. Я смотрел на нодпорт, но похоже, что вам нужно было бы указать это точное имя порта.

Мне нужно, чтобы каждая реплика в кластере имела либо случайный внешний IP-адрес, либо случайный внешний порт на одном и том же IP-адресе. Это возможно или мне нужно создать службу для каждого отдельного порта / IP-адреса.

1 Ответ

2 голосов
/ 02 мая 2020

Вам необходимо создать службу NodePort для каждого экземпляра сервера minecraft.

A NodePort открыть случайный порт до <30000 и связать его с внутренним (набором) на основе селекторы. </p>

Например, предположим, что существует один экземпляр сервера minecraft со следующим ресурсом:

apiVersion: v1
kind: Pod
metadata:
  name: minecraft-instance1
  labels:
    instance: minecraft-1
spec:
...

Это описание nodePort для доступа к нему через порт 30007 ( на каждом узле кластера ):

apiVersion: v1
kind: Service
metadata:
  name: service-minecraft-1
spec:
  type: NodePort
  selector:
    instance: minecraft-1
  ports:
    - port: 25565
      targetPort: 25565
      nodePort: 30007
...