我在 k8s 中有两个不同的应用程序需要读取数据,例如AppA
来自 AppB
,两者都部署在同一集群
这里的棘手
部分是我需要将两个应用程序部署到任何集群并知道要连接的主机和端口,我不想想要使用硬-编码值。
例如
应用程序A从应用程序B读取数据
App B
是带有 REST API 的 Web 应用程序
因此应用程序 A
需要像 http://10.26.131.136:9090/api/app/getconfig 那样调用
应用程序A知道服务路径:就像应用程序B
的api/app/getconfig
,但它如何知道主机和端口 应用程序B?
我不能使用它硬编码,如果我使用 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/