与Kubernetes pod进行AWS跨群集通信

时间:2017-02-24 18:49:34

标签: amazon-web-services amazon-ec2 kubernetes amazon-vpc

  

我对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的所有流量,但它没有帮助。

真的很感谢你的帮助!

1 个答案:

答案 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 博客文章。