我在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/getconfigB一样,但是它如何知道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/

10-13 04:34