Kubernetes OpenShift路由-无法连接到远程主机:没有到主机的路由

Kubernetes OpenShift路由-无法连接到远程主机:没有到主机的路由,kubernetes,openshift,openshift-origin,Kubernetes,Openshift,Openshift Origin,我已经部署了一个运行在OpenShift Origin上的grpc服务。这是由OpenShift服务支持的。该服务通过OpenShift路由公开。我试图通过一个服务和路线使这个吊舱可用,该服务和路线将集装箱港口(50051)映射到8080港口的外部世界 服务尝试公开的映像在其Dockerfile中具有: EXPOSE 50051 该路线具有以下特点: 服务端口:8080/TCP 目标端口:50051 在DeploymentConfig中,我使用以下命令指定端口: ports: - con

我已经部署了一个运行在OpenShift Origin上的grpc服务。这是由OpenShift服务支持的。该服务通过OpenShift路由公开。我试图通过一个服务和路线使这个吊舱可用,该服务和路线将集装箱港口(50051)映射到8080港口的外部世界

服务尝试公开的映像在其Dockerfile中具有:

EXPOSE 50051
该路线具有以下特点:

  • 服务端口:8080/TCP
  • 目标端口:50051
在DeploymentConfig中,我使用以下命令指定端口:

ports:
 - containerPort: 50051
   protocol: TCP
然而,当我试图通过路由和端口访问应用程序时,我得到(来自Java)

当我尝试远程登录服务IP时:

telnet 172.30.197.247 8080
我可以连接

但是,当我尝试通过路由连接时,它不起作用:

telnet my.route.com 8080
努力。。。 telnet:连接到地址:连接被拒绝

当我使用:

curl -kv my-svc.myproject.svc.cluster.local:8080
我可以连接

因此,这项服务似乎正在发挥作用,但路线却没有


我一直在阅读

上的故障排除指南,有很多东西需要检查:

  • 您的服务是否有路由点?以下是一个例子:

    apiVersion: v1 kind: Route spec: host: my.route.com to: kind: Service name: yourservice weight: 100 版本:v1 种类:路线 规格: 主持人:my.route.com 致: 种类:服务 姓名:yourservice 体重:100 如果不是这样,则路由和服务不连接

  • 您可以检查路由器配置。使用
    oc rsh
    连接到路由器,并检查是否在
    /var/lib/haproxy/conf/haproxy.config
    中找到路由名称(后端名称格式应为backend be\u http\u NAMESPACE\u ROUTENAME)。后端部分下方的
    服务器
    部分应包含pod的ip(您可以使用
    oc get pods-o wide
    命令获取pod ip)

    如果不是这样,则路由未在路由器配置中注册。您可以尝试重新启动路由器端并重新检查haproxy.config文件

  • 您能从路由器容器连接到pod ip吗


OpenShift中的路由器设置重点是。但是,您似乎可以使用从集群公开非web应用程序端口。因为gRPC是一个在线协议,所以您可能需要走这条路

apiVersion: v1 kind: Route spec: host: my.route.com to: kind: Service name: yourservice weight: 100