【发布时间】:2023-04-06 23:39:02
【问题描述】:
根据 Kubernetes 文档,each container gets a set of environment variables that lets it access other services
例如,如果存在名为 foo 的 Service,则所有容器都会在其初始环境中获取以下变量:
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 变量来给我端口号,我应该怎么做?
【问题讨论】:
标签: kubernetes service-discovery azure-aks