将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