首页 文章

Istio注入数据库应用程序,使其服务类型为NodePort,无法访问节点端口

提问于
浏览
1

我正在使用 istio 1.0.2 versionistio-demo-auth .yaml,我有一个 mssqlactivemq 部署在与其他应用程序相同的命名空间中,两者都是由istioctl注入的 . 应用程序可以连接到群集内的这两个服务,但我将这两个服务的类型设置为 NodePort ,它成功了,但我无法访问那些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 33m

kubectl get deployment -n $namespace
NAME希望获得当前最新的可用年龄
activemq 1 1 1 1 4h
mssql-master 1 1 1 1 44m

然后我尝试使用网关和虚拟服务来使用ingressgateway tcp端口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.如何为61618或其他tcp连接配置另一个http连接?目前我只能使用31400进行一项服务(mssql-2433) .
2.为什么在将这些应用程序注入istio之后,该nodeport无法正常工作,它怎么能工作?
谢谢 .

1 回答

  • 0

    参考documentation:

    类型NodePort

    如果将 type 字段设置为 NodePort ,则Kubernetes主站将从 --service-node-port-range 标志指定的范围(默认值:30000-32767)中分配端口,并且每个节点将代理该端口(每个节点上的相同端口号)到 Service . 该端口将在 Service.spec.ports[*].nodePort 字段中报告 .

    只需更新所有主服务器的配置,您就可以分配任何端口 .

    关于第二个问题:我建议你在github,上创建一个问题,因为它看起来像一个bug,在文档中使用nodePort没有任何限制 .

相关问题