Kubernetes 中的跨集群通信

Cross cluster communication in Kubernetes

我在 A​​WS EKS 中有两个 kubernetes 集群 运行。我怎样才能将它们连接起来,以便两者都可以通信和共享数据?

在一个集群上,只有无状态应用程序是 运行,而在另一个集群上,如 Redis DBRabbitMQ

哪种设置通信的方法最简单?

如果您有 运行 数据库和其他私有有状态工作负载的特定集群,请确保该 EKS 集群的工作节点是私有的。

下一步是创建服务资源以使用内部端点公开您的 Redis 数据库。您可以通过指定以下内容来实现它:

annotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: "true"

通过以上内容,您将使用内部端点公开整个集群和有状态工作负载。完成后,您可以通过两种方式连接 VPC。

  1. VPC 对等允许一个集群与另一个集群连接。
  2. 两个 VPC 将用于私密通信的中转网关。

我将按照@marcincuber 建议的方法使用内部负载平衡器。

但是,我还有另一种解决方法,将 Redis、RabbitMQ 服务类型公开为 LoadBalancer

由于我的两个集群都在同一个 VPC 中,因此不需要 VPC 对等或任何网关设置,我正在考虑通过使用 Kubernetes 默认服务来限制流量 loadBalancerSourceRanges