openshift服务发现中的意外值



我有几个微服务,通过S2I部署在openshift集群上。它们每个都通过服务和路由公开。第一个微服务需要通过http与另一个微服务(在另一个pod上)的REST API通信。当我部署第一个微服务时,我传递一个环境变量MICROSERVICE_2_SERVICE_HOST,其值为'http://microservice-2' ('microservice-2'是微服务2生成的openshift服务的名称,类型为ClusterIP..生成的两个服务类型都是ClusterIP)

在第一个微服务中,我使用环境变量MICROSERVICE_2_SERVICE_HOST来构建REST API的URL。问题是,不是得到"http://172.30.245.8:8080/……在kubernetes中,我得到的是"tcp://172.30.245.8:8080/…"'和REST客户端无法构建URL: java.net. malformmedurlexception:未知协议:tcp

当我检查微服务1的容器内的环境变量时,我看到:MICROSERVICE_2_PORT=tcp://172.30.245.8:8080 MICROSERVICE_2_PORT_8080_TCP=tcp://172.30.245.8:8080 MICROSERVICE_2_PORT_8080_TCP_ADDR=172.30.245.8 MICROSERVICE_2_PORT_8080_TCP_PORT=8080 MICROSERVICE_2_PORT_8080_TCP_PROTO=tcp ...

我已经尝试将服务更改为NodePort,但我得到相同的结果。我知道我可以在字符串内使用IP:port值,但我想知道openshift为什么以及如何工作

这与预期的行为是内联的。我想你可以使用MICROSERVICE_2_SERVICE_PORTMICROSERVICE_2_SERVICE_HOST来实现url的组合。