go - 如何在运行时使用应用程序主机和端口

标签 go kubernetes

我在 k8s 中有两个不同的应用程序需要读取数据,例如AppA 来自 AppB,两者都部署在同一集群

这里的棘手部分是我需要将两个应用程序部署到任何集群并知道要连接的主机和端口,我不想想要使用硬-编码值。

例如

应用程序A从应用程序B读取数据

App B 是带有 REST API 的 Web 应用程序 因此应用程序 A 需要像 http://10.26.131.136:9090/api/app/getconfig 那样调用

应用程序A知道服务路径:就像应用程序Bapi/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/

相关文章:

kubernetes - 如何在 headless 服务上使用 Traefik IngressRoute

Kubernetes 命名空间默认服务帐户

google-app-engine - 可以使用 Go Google App Engine Standard 的云端点吗?

go - 为什么 Go 中的 io.Writer 没有 NopCloser?

nginx - 从同一个入口暴露 TCP 和 UDP

kubernetes - kubelet 和 apriserver 用 minikube 停止

kubernetes - 如何使用 HELM 强制重新部署

xcode - Mac 更新后无法构建 Go 应用程序

go - 从指针接口(interface)获取结构体的大小

go - dovecot:lmtp:错误: fatal error :无法保留页面摘要内存