我在k8s中有两个不同的 t应用程序,它们需要读取数据,例如AppA
中的AppB
,都部署在同一集群上
这里的tricky
部分是,我需要将两个应用程序都部署到任何群集,并知道要连接的主机和端口,我不想想要使用硬编码的值。
例如
App A从App B读取数据
应用程序B
是带有Rest API的Web应用程序
因此应用程式A
需要像http://10.26.131.136:9090/api/app/getconfig一样调用
App A知道服务路径:就像App api/app/getconfig
的B
一样,但是它如何知道appB的主机和端口?
我不能使用硬编码,如果我使用type:LoadBalacer
可以使用,但是这是硬编码的主机和端口,我需要某种方式在运行时确定它,也许使用serviceName等?
最佳答案
注意:Kube-DNS命名约定为service.namespace.svc.cluster-domain.tld
,默认群集域为cluster.local
因此,只要服务位于同一群集中,您就可以将您的应用程序称为..svc。然后,您需要通过发出以下命令来检查应用程序正在监听的端口:
kubectl -n <namespace> get svc
记录服务标识符并发出:
kubectl -n <namespace> get svc <identifier> -o yaml
这将列出您的服务 list ,您可以在其中查看应用程序正在监听的端口。
关于go - 如何在运行时使用应用程序主机和端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59250812/