【发布时间】:2020-07-28 16:44:47
【问题描述】:
我正在我的新项目中探索服务发现的选项。
所以它是这样的: 我有多台裸机 Kubernetes (Linux) 机器,没有云提供商。 我有多个 Kubernetes 集群,在本例中,我们将它们命名为 Cluster-1 和 Cluster-2。
现在假设我有 10 个微服务(spring boot),我想将它们部署在两个集群中。 所以两个集群中的所有 10 个微服务。
我需要的服务发现机制是这样的:
如果来自 Cluster-1 的微服务 ms-1 需要调用另一个 微服务 ms-2 那么我希望通信偏好是 如果 ms-2 在 Cluster-1 中正常运行且处于同一集群中。然而, 如果 ms-2 未在 Cluster-1 中启动/运行,则来自 ms-1 的调用 (Cluster-1) 必须转到 ms-2 (Cluster-2)。
这显然必须得到支持才能在多集群地理网络中发挥作用。
我无法通过原生 Kubernetes 提供的服务发现机制来实现这一点。
我尝试使用 Istio,但发现它仅使用原生 Kubernetes 服务发现机制。 因此,Istio 不存在了。
我决定尝试 Consul 并使用 类型 NodePort 的 Kubernetes 服务部署我的微服务,希望 Consul 能够解析目标服务的主机和 nodePort集群间和集群内。手指交叉!!
现在我主要有两个问题:
-
是否需要在每个微服务中按顺序使用 spring-cloud-consul 与 Consul 交谈并获取目标服务的主机:端口?
我看到 Linkerd 确实提供了一些功能,通过这些功能微服务可以与 Linkerd 对话,Linkerd 与 Consul 对话并代表 spring-cloud-consul 客户端解析服务。
我什至看到了这个帖子 --> https://discourse.linkerd.io/t/linkerd-with-springboot/638
我想知道更多关于如何做到这一点的细节。
我需要 Consul 吗? Linkerd 是否为我的要求提供解决方案? 如果是,请赐教如何?
感谢您阅读这么长的问题。我希望我能得到一些及时和积极的指导来继续我的项目。
【问题讨论】:
-
有人可以回答吗?
-
能否分享在裸机 kubernetes 集群中设置多集群的实施步骤、文档或建议
标签: kubernetes consul spring-cloud-consul linkerd bare-metal-server