如何在同一命名空间下不通过URL中的命名空间名访问其他Pod的服务?
同一命名空间内Pod访问服务的无命名空间URL方案
直接用服务名访问:Kubernetes默认允许同一命名空间里的Pod直接通过服务名称访问对应服务,不用加命名空间后缀。比如你的服务叫
user-api,同命名空间的Pod里直接写http://user-api或者user-api:8080就能连上,集群DNS会自动在当前命名空间下解析这个名称。检查DNS是否正常:如果怕解析有问题,能在Pod里跑个命令验证:
nslookup user-api正常输出会显示服务的ClusterIP,说明解析没问题。
用自动注入的环境变量:Kubernetes会给每个Pod自动注入关联服务的环境变量,比如服务名是
user-api,就会生成USER_API_SERVICE_HOST(存的是服务ClusterIP)和USER_API_SERVICE_PORT(存的是服务端口)这两个变量。代码里直接读这俩变量拼地址就行,完全不用管命名空间是什么。
内容的提问来源于stack exchange,提问作者Azodious
相关产品推荐
相关产品推荐

