将Kubernetes容器连接到独立VPC中的RDS实例

我有一个Kubernetes集群在自己的VPC内部的Amazon EC2中运行,我试图让Docker化服务连接到一个RDS数据库(在不同的VPC中)。 我已经find了对等和路由表条目,所以我可以从小型机器做到这一点:

ubuntu@minion1:~$ psql -h <rds-instance-name> Password: 

所以这一切工作。 问题是,当我尝试从Kubernetespipe理的容器内部build立连接时,我得到一个超时:

 ubuntu@pod-1234:~$ psql -h <rds-instance-name> … 

为了获得连接,我configuration了一个对等连接,从Kubernetes VPC设置路由表,以便10.0.0.0/16 VPC的CIDR)映射到对等连接,并更新RDS实例的安全组允许来自地址范围172.20.0.0/16(Kubernetes VPC的CIDR)的端口5432的stream量。

在Kelsey Hightower的帮助下,我解决了这个问题。 原来这是一个Docker路由问题。 我已经写了一篇博客文章的细节,但底线是改变奴才的路由表如下所示:

 $ sudo iptables -t nat -I POSTROUTING -d <RDS-IP-ADDRESS>/32 -o eth0 -j MASQUERADE 

你是否修改源/目的地检查?

由于您的实例将发送和接收除子网分配的IP之外的IPstream量,因此您需要禁用源/目标检查。

查看图片: https : //coreos.com/assets/images/media/aws-src-dst-check.png