【问题标题】:Inter-Cluster Service Discovery in Bare Metal Kubernetes Machines裸机 Kubernetes 机器中的集群间服务发现
【发布时间】:2020-07-28 16:44:47
【问题描述】:

我正在我的新项目中探索服务发现的选项。

所以它是这样的: 我有多台裸机 Kubernetes (Linux) 机器没有云提供商。 我有多个 Kubernetes 集群,在本例中,我们将它们命名为 Cluster-1Cluster-2

现在假设我有 10 个微服务(spring boot),我想将它们部署在两个集群中。 所以两个集群中的所有 10 个微服务。

我需要的服务发现机制是这样的:

如果来自 Cluster-1 的微服务 ms-1 需要调用另一个 微服务 ms-2 那么我希望通信偏好是 如果 ms-2Cluster-1 中正常运行且处于同一集群中。然而, 如果 ms-2 未在 Cluster-1 中启动/运行,则来自 ms-1 的调用 (Cluster-1) 必须转到 ms-2 (Cluster-2)。

这显然必须得到支持才能在多集群地理网络中发挥作用。

我无法通过原生 Kubernetes 提供的服务发现机制来实现这一点。

我尝试使用 Istio,但发现它仅使用原生 Kubernetes 服务发现机制。 因此,Istio 不存在了。

我决定尝试 Consul 并使用 类型 NodePort 的 Kubernetes 服务部署我的微服务,希望 Consul 能够解析目标服务的主机和 nodePort集群间和集群内。手指交叉!!

现在我主要有两个问题:

  1. 是否需要在每个微服务中按顺序使用 spring-cloud-consul 与 Consul 交谈并获取目标服务的主机:端口?

    我看到 Linkerd 确实提供了一些功能,通过这些功能微服务可以与 Linkerd 对话,Linkerd 与 Consul 对话并代表 spring-cloud-consul 客户端解析服务。

    我什至看到了这个帖子 --> https://discourse.linkerd.io/t/linkerd-with-springboot/638

    我想知道更多关于如何做到这一点的细节。

  2. 我需要 Consul 吗? Linkerd 是否为我的要求提供解决方案? 如果是,请赐教如何?

感谢您阅读这么长的问题。我希望我能得到一些及时和积极的指导来继续我的项目。

【问题讨论】:

  • 有人可以回答吗?
  • 能否分享在裸机 kubernetes 集群中设置多集群的实施步骤、文档或建议

标签: kubernetes consul spring-cloud-consul linkerd bare-metal-server


【解决方案1】:

听起来您正在尝试使用服务网格来解决这个问题。如果是这样,Consul 可以通过其服务网格本地提供此功能。您不需要任何额外的软件。

您需要在每个 Kubernetes 集群中部署 Consul,并使用 WAN Federation 联合两个环境。集群联合后,您可以部署Mesh Gateways(请参阅tutorial)以启用集群之间的服务到服务通信。然后在 L7 service-resolver 配置中配置您的 failover policy,以便在本地实例不可用时将流量重新路由到备用集群。

我希望这会有所帮助。如果您需要更多详细信息,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2021-12-25
    • 2016-02-22
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    相关资源
    最近更新 更多