Kubernetes 试图在Minikube中运行echo服务器,但Istio从客户端套接字获得的连接被拒绝

Kubernetes 试图在Minikube中运行echo服务器,但Istio从客户端套接字获得的连接被拒绝,kubernetes,istio,Kubernetes,Istio,我有一个简单的echo服务器(TCP协议),它是用CPP编写的。我能够将服务器放在docker容器中,并通过端口映射使其工作。所以我认为我的客户机服务器是好的。当我上传Kubernetes中的服务器映像并部署Istio时,入口网关监听端口31400,我认为这是使用tcp时正确的一个端口,我从尝试连接到套接字的客户端获得连接被拒绝 apiVersion: apps/v1 kind: Deployment metadata: name: tcp-echo-deployment lab

我有一个简单的echo服务器(TCP协议),它是用CPP编写的。我能够将服务器放在docker容器中,并通过端口映射使其工作。所以我认为我的客户机服务器是好的。当我上传Kubernetes中的服务器映像并部署Istio时,入口网关监听端口31400,我认为这是使用tcp时正确的一个端口,我从尝试连接到套接字的客户端获得连接被拒绝

apiVersion: apps/v1
kind: Deployment
metadata:
    name: tcp-echo-deployment
    labels:
        app: tcp-echo
        system: example
spec:
   replicas: 1
   selector:
      matchLabels:
              app: tcp-echo
       template:
          metadata:
             labels:
                    app: tcp-echo
                    system: example
          spec:
            containers:
            - name: tcp-echo-container
              image: igordptx/my-tcp-server
              imagePullPolicy: Always
              env:
              - name: TCP_PORT
                value: "2701"
              - name: NODE_NAME
                valueFrom:
                  fieldRef:
                    fieldPath: spec.nodeName
              - name: POD_NAME
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.name
              - name: POD_NAMESPACE
                valueFrom:
                  fieldRef:
                      fieldPath: metadata.namespace
              - name: POD_IP
                  valueFrom:
                   fieldRef:
                      fieldPath: status.podIP
              - name: SERVICE_ACCOUNT
                valueFrom:
                   fieldRef:
                      fieldPath: spec.serviceAccountName
                ports:
                   - name: tcp-echo-port
                     containerPort: 2701
`

我是新手,我正在尝试让一个简单的echo服务器工作。附加用于路由的部署、服务、网关和虚拟服务的YAML文件的图片

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
        name: echo-tcp-gateway
spec:
        selector:
                istio: ingressgateway
        servers:
        - port:
                number: 31400
                name: tcp-echo
                protocol: TCP
          hosts:
              - "*"


apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
        name: tcp-echo-vs-from-gw
spec:
        hosts:
             - "*"
        gateways:
             - echo-tcp-gateway
        tcp:
             - match:
                        - port: 31400
               route:
                        - destination:
                                 host: tcp-echo-service
                                 port:
                                        number: 2701

需要比YAML配置多一点的信息。例如,您是否检查了pod是否正在运行?从在docker中运行echo服务器到使用Istio部署echo服务器,有n件事情可能会出错。为什么不在没有Istio的情况下创建一个简单的部署并对其进行测试呢?是的,Pod正在运行,所有的Pod和部署都在运行且正常。据我所知,Kubernetes ingress无法处理TCP通信,但也许我错了。现在我正在使用clusterIp服务,以确保它不会暴露于外界。Kubernetes Ingress是一个骨架API。它需要第三方控制器才能工作。Istio提供此控制器,但也有独立的入口控制器,例如nginx控制器或traefik。它们都支持TCP。那天我在Minikube上试过Istio,很麻烦。从未再次使用过,因此无法对其当前状态进行评论。此外,我认为Istio使用VirtualService对象而不是服务。不确定。嗨,我想指出,istio与minikube不完全兼容。一些istio功能将不起作用。谢谢,我让它起作用了。Insito ingress外部IP处于挂起模式,因此我从节点端口访问集群。我似乎在工作,但不知道为什么。如果有人有好的解释,我会很高兴听到的
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
        name: echo-tcp-gateway
spec:
        selector:
                istio: ingressgateway
        servers:
        - port:
                number: 31400
                name: tcp-echo
                protocol: TCP
          hosts:
              - "*"


apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
        name: tcp-echo-vs-from-gw
spec:
        hosts:
             - "*"
        gateways:
             - echo-tcp-gateway
        tcp:
             - match:
                        - port: 31400
               route:
                        - destination:
                                 host: tcp-echo-service
                                 port:
                                        number: 2701