Networking 使用yaml在K8s中不同集群中的POD之间进行通信

Networking 使用yaml在K8s中不同集群中的POD之间进行通信,networking,kubernetes,google-kubernetes-engine,amazon-eks,Networking,Kubernetes,Google Kubernetes Engine,Amazon Eks,是否有人能提供参考/基本想法,说明如何在不同集群中的POD之间进行通信。 假设集群A有Pod A,集群B有Pod B,那么我们如何确保Pod A可以使用yaml与Pod B通信-提前感谢将此答案作为社区wiki发布,以提高可视性,并在用户@David Maze的评论中发布解决方案时添加一些其他资源: 如果POD位于不同的集群中,它们就不能直接相互通信(不使用NodePort或LoadBalancer服务,或者从其集群外部访问目标服务) 对于最常见的设置,通过Cluster1与Pod2与Clus

是否有人能提供参考/基本想法,说明如何在不同集群中的POD之间进行通信。
假设集群A有Pod A,集群B有Pod B,那么我们如何确保Pod A可以使用yaml与Pod B通信-提前感谢

将此答案作为社区wiki发布,以提高可视性,并在用户@David Maze的评论中发布解决方案时添加一些其他资源:


如果POD位于不同的集群中,它们就不能直接相互通信(不使用NodePort或LoadBalancer服务,或者从其集群外部访问目标服务)


对于最常见的设置,通过
Cluster1
Pod2
Cluster2
进行通信的方式是:

  • 节点端口类型的
    服务
  • 负载平衡器类型的
    服务
  • 入口
    资源-特定于
    HTTP
    /
    HTTPS
    流量
以上所有解决方案都将在很大程度上取决于Kubernetes集群的部署位置

例如:

使用诸如
GKE
AKS
EKS
等云解决方案,您可以使用
LoadBalancer
ingres
资源的服务类型将流量定向到您的pod

对于裸机解决方案,您需要使用其他工具,如
metallib
来使用
负载平衡器类型的服务

您还可以查看以下资源:


例如,假设您有2个Kubernetes集群,它们可以使用
LoadBalancer
类型的服务公开流量

第一个群集上应用:

apiVersion:apps/v1 种类:部署 元数据: 名称:nginx部署 规格: 选择器: 火柴标签: app:nginx 副本:3份 模板: 元数据: 标签: app:nginx 规格: 容器: -姓名:nginx 图片:nginx 端口: -集装箱港口:80 --- 版本:v1 种类:服务 元数据: 名称:nginx服务 规格: 选择器: app:nginx 端口: -协议:TCP 港口:80 目标港:80 类型:负载平衡器
检查与服务相关的
EXTERNAL-IP

  • $kubectl获取服务nginx服务
名称类型群集IP外部IP端口
nginx服务负载平衡器10.92.10.48 A.B.C.D 80:30994/TCP 26s
切换到第二个群集并运行:

  • $kubectl run-it ubuntu--image=ubuntu--/bin/bash
  • $apt更新和apt安装curl
  • $curl A.B.C.D
您应该能够看到:


感谢您使用nginx


额外资源:

  • -可能有点特定于GKE

如果POD位于不同的集群中,它们就不能直接相互通信(不使用NodePort或LoadBalancer服务,或者从其集群外部访问目标服务)。好的,您可以详细说明一下。尽管我们正在创建负载平衡器。我们可以访问该服务,但实际上pod communication@DavidMazeYou调用负载平衡器端点的方式与集群B之外的任何其他进程调用pod B的方式相同。