Istio внедрили приложения БД, сделайте их тип сервиса как NodePort, нодпорт недоступен - PullRequest
0 голосов
/ 05 ноября 2018

Я использую istio 1.0.2 версия с istio-demo-auth .yaml, у меня есть один mssql и activemq развернут в тех же пространствах имен с другими приложениями, оба были внедрены istioctl. Приложения могут подключаться к этим двум службам внутри кластера, но я делаю тип этих двух служб как NodePort , это успешно, но я не могу получить доступ к этим узлам (52433, 51618 или 58161).

kubectl get svc -n $namespace
ИМЯ ТИП КЛАСТЕР-IP ВНЕШНИЙ IP-ПОРТ (S) ВОЗРАСТ
amq-master-01 NodePort 10.254.176.151 61618: 51618 / TCP, 8161: 58161 / TCP 4h
mssql-master NodePort 10.254.209.36 2433: 52433 / TCP 33 м

kubectl get deployment -n $namespace
ИМЯ ЖЕЛАЕТ ТЕКУЩИЙ СОВРЕМЕННЫЙ ДОСТУПНЫЙ ВОЗРАСТ
activemq 1 1 1 1 4h
mssql-master 1 1 1 1 44 м

Затем я пытаюсь использовать шлюз и виртуальный сервис для использования tcp-порта ingressgateway 31400. Он работает, как показано ниже:

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: tcp-gateway
      namespace: multitenancy
    spec:
      selector:
        istio: ingressgateway
      servers:
      - port:
          number: 31400
          name: tcp
          protocol: TCP
        hosts:
        - "*"
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: mssql-tcp
      namespace: multitenancy
    spec:
      gateways:
      - tcp-gateway
      hosts:
      - "*"
      tcp:
      - match:
        - port: 31400
        route:
        - destination:
            host: mssql-master
            port:
              number: 2433

Мой вопрос,
1. Как настроить другое соединение http для 61618 или другие соединения tcp? В настоящее время я могу использовать только 31400 для одной услуги (mssql-2433).
2. Почему этот узел не работает после того, как я ввожу эти приложения в istio, как это может работать?
Спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

Ссылаясь на документацию :

Тип NodePort

Если вы установите для поля type значение NodePort, мастер Kubernetes выделит порт из диапазона, указанного флагом --service-node-port-range (по умолчанию: 30000-32767), и каждый узел будет проксировать этот порт (то же самое). номер порта на каждом узле) в ваш Service. Этот порт будет указан в вашем поле Service .spec.ports[*].nodePort.

Просто обновите конфигурацию всех мастеров, и вы сможете выделить любой порт.

По второму вопросу: Я предлагаю вам создать проблему на github, , потому что это похоже на ошибку, нет ограничений для использования nodePort в документации.

...