我对AWS上的pod之间的跨群集通信提出质疑。
我正在使用kubernetes在AWS上部署群集。两个集群都在同一区域和AZ。两个集群都部署在自己的VPC中,并且具有不重叠的子网。我已经成功创建了VPC Peering以在两个VPC之间建立通信。来自VPC的Minions(实例)可以通过私有IP互相ping通。
问题是,来自一个群集(VPC)的Kubernetes pod无法通过其内部IP在另一个群集中ping Pod。我看到交通离开了pod和minion但是没有在其他VPC上看到它。
这是IP信息:
群集1(VPC 1) - 子网172.21.0.0/16 VPC 1中的Minion(实例) - 内部IP - 172.21.0.232 小精灵1上的Pod - IP - 10.240.1.54
群集2(VPC 2) - 子网172.20.0.0/16 VPC 2中的Minion(实例) - 内部IP - 172.20.0.19 小精灵1上的Pod - IP - 10.241.2.36
我在两个VPC之间配置了VPC对等,我可以在VPC 1(172.21.0.232)中将Minion ping到Minion 在VPC 2到IP 172.20.0.19
但是,当我尝试在VPC 1,Minion 1 - 来自VPC 2,Minion Pod 10.241.2.36的IP 10.240.1.54上ping pod时,它无法ping通。
这是AWS支持的用例吗?我怎样才能实现它。我在两个实例上都配置了安全组,以允许来自源10.0.0.0/8的所有流量,但它没有帮助。
真的很感谢你的帮助!
答案 0 :(得分:0)
与集群外部的pod直接通信不应该起作用。豆荚可以通过services暴露在外面。
有多种选择,但具有如下定义的基本服务可以通过预定义端口将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。
除此之外,您还应考虑查看ingress configurations。
官方文档之外的一个非常好的摘要是Kubernetes Services and Ingress Under X-ray 博客文章。