根据 Kubernetes 文档,每个容器都有一组环境变量,可以访问其他服务
例如,如果存在名为 foo 的服务,则所有容器将在其初始环境中获取以下变量:
FOO_SERVICE_HOST=<the host the Service is running on> FOO_SERVICE_PORT=<the port the Service is running on>
但是,似乎在我的集群中我没有得到这些变量的预期值:
tlycken@local: k exec -ti <my-pod> ash
/app # echo $SEARCH_HOST
/app # echo $SEARCH_PORT
tcp://10.0.110.126:80
我宁愿期待看到类似的东西
tlycken@local: k exec -ti <my-pod> ash
/app # echo $SEARCH_HOST
10.0.110.126
/app # echo $SEARCH_PORT
80
我知道文档也说
如果您正在编写与服务对话的代码,请不要使用这些环境变量;请改用服务的 DNS 名称。
但这只会给我服务的主机名,而不是端口。因此,我想在我的部署模板中设置SEARCH_HOST
为search
并依赖SEARCH_PORT
来获取端口,但是当我将现有环境变量中的服务 url 放在一起时,它变成了http://search:tcp://10.0.110.126:80
显然不起作用。
如果我不能依靠FOO_SERVICE_PORT
变量给我端口号,我应该怎么做?