Как сделать так, чтобы сервисные TCP / UDP-порты были доступны извне в Kubernetes? - PullRequest
0 голосов
/ 05 июня 2018

У меня много клиентов, работающих в одном кластере Kubernetes (в AWS), где у каждого клиента есть один Pod, который предоставляет один TCP порт ( не HTTP ) и один UDP порт.

  • Мне не нужны возможности балансировки нагрузки.
  • При таком подходе должен быть открыт внешний IP-адрес с выделенным портом для каждого арендатора
  • Я не хочу выставлять узлы напрямую в Интернет

У меня пока есть следующий сервис:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  labels:
    app: my-app
spec:
  type: NodePort
  ports:
    - port: 8111
      targetPort: 8111
      protocol: UDP
      name: my-udp
    - port: 8222
      targetPort: 8222
      protocol: TCP
      name: my-tcp
  selector:
    app: my-app

Какой путь?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019
  • Развертывание входного контроллера NGINX на вашем кластере AWS
  • Измените тип службы my-service вашего сервиса с NodePort на ClusterIP
  • ОтредактируйтеconfigMap tcp-services в ingress-nginx добавление пространства имен:
data:
  "8222": your-namespace/my-service:8222
  • То же самое для configMap udp-services:
data:
  "8111": your-namespace/my-service:8111

Теперь вы можете обращаться к своему приложению извне, используя IP-контроллер nginx <ip:8222> (TCP) и <ip:8111> (UDP)

0 голосов
/ 05 июня 2018

Описание , предоставляемое @ffledgling, - это то, что вам нужно.

Но я должен отметить, что если вы хотите выставить порты, вы должны использовать балансировщик нагрузки или предоставить узлы дляинтернет.Например, вы можете выставить узел в Интернет и разрешить доступ только к некоторым необходимым портам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...