当前位置: 首页 > 知识库问答 >
问题:

AWS与Kubernetes吊舱的跨集群通信

柯骏
2023-03-14

我对AWS上POD之间的跨集群通信有疑问。

我正在使用kubernetes在AWS上部署集群。两个星团位于同一区域和AZ。两个集群都部署在各自的VPC中,子网不重叠。我已经成功创建了VPC对等,以在两个VPC之间建立通信。VPC的仆从(实例)可以通过私有IP相互ping。

问题是,来自一个集群(VPC)的Kubernetes吊舱不能通过其内部IP ping另一个集群中的吊舱。我看到流量离开吊舱和仆从,但在其他VPC上看不到。

以下是IP信息:

群集1(VPC 1)-子网172.21.0.0/16VPC 1中的小跟班(实例)-内部IP-172.21.0.232Pod on Minion 1-IP-10.240.1.54

集群2(专有网络2)-专有网络2中的子网172.20.0.0/16迷你(实例)-内部IP-迷你1上的172.20.0.19机架-IP-10.241.2.36

我已经在两个VPC之间配置了VPC对等,我可以通过IP 172.20.0.19将VPC 1(172.21.0.232)中的Minion ping到VPC 2中的Minion

但是,当我尝试ping VPC 1上的播客,仆从1-VPC 2上的IP 10.240.1.54,仆从播客10.241.2.36时,它无法ping。

AWS中是否支持此用例?我怎样才能做到这一点。我已经在这两个实例上配置了安全组,以允许来自源10.0.0.0/8的所有流量,但它没有帮助。

真的很感谢你的帮助!

共有1个答案

戚育
2023-03-14

与集群外部的pod直接通信不应该工作。Pod可以通过服务暴露在外部。

有很多选项,但是具有以下定义的基本服务可以通过预定义的端口向另一个群集公开Pod:

---
kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
    nodePort: 34567

这样,您就可以通过映射在任何kubernetes节点上的端口34567访问pod。

此外,您还应该考虑检查入口配置

除了官方文档之外,还有一个非常好的总结,那就是Kubernetes服务和Ingress在X射线博客上的文章。

 类似资料:
  • 我在GKE负责詹金斯。构建的一个步骤是使用< code>kubectl部署另一个集群。我在jenkins容器中安装了gcloud-sdk。正在讨论的构建步骤是这样做的: 然而,我得到了这个错误(虽然它在本地正常工作): 注意:我注意到,在没有配置的情况下(~/.kube为空),我可以使用kubectl并访问pod当前运行的集群。我不知道它是如何做到的,它是否使用/var/run/secrets/k

  • 我最近设置了一个多机器库伯内特斯集群w/Docker和Flannel。我在子网上设置了Flannel,这样主机A上分配IP为的容器可以ping主机B上分配IP为的容器。 我已经设置了 Kubernetes 及其所有各种组件(、 、、),我可以成功地围绕集群启动部署和 pod。 我在集群上部署了Redis服务和webapp pod。在我的webapp pod上,环境变量<code>REDIS_SER

  • 我是Kubernetes的初学者,我的情况如下:我有两个不同的吊舱:吊舱和吊舱。首先,我想向外界公开PodA,所以我为PodA创建了一个服务(类型NodePort或LoadBalancer),这对我来说并不难理解。 然后我想让PodA与PodB通信,在谷歌搜索了几个小时后,我发现答案是我还需要为PodB创建一个服务(如果我想让PodB只在集群内可见,请键入ClusterIP),如果我这样做,我可以

  • 我在俄亥俄州的一个AWS地区安装了OpenShift3.9。我把詹金斯装在里面了。我有一个管道代码,它将从GitHub中获取Java代码,并将其与jboss绑定,并将其部署在同一个集群中的项目测试中。它工作得很好,我能够访问应用程序,因为pod正在创建,应用程序也与JBoss绑定。现在我想跨不同的集群部署这个应用程序,可以在同一区域内部署,也可以跨不同的区域部署。有没有办法做到这一点?

  • 我可以看到这两个IP,我试图连接使用tcp套接字,绑定他们与tcp端口8080。然而,它表明它没有连接。 我认为这不是使用tcp套接字连接它们的方式。是否有任何方法使一个pod服务器和其他pod客户端和conncet使用tcp套接字。 编辑: Client.C

  • 我制作了一个customer-pod(包括一个运行在端口8080上的Spring Boot应用程序的映像)。 我可以用“$kubectl get pods commands-o wide”来检查它 ================================================================= 名称就绪状态重新启动老化IP节点