我在其自己的VPC内部在Amazon EC2中运行了Kubernetes集群,我正在尝试将Dockerized服务连接到RDS数据库(在不同的VPC中)。我已经找到了对等和路由表条目,所以我可以从minion机器上做到这一点:
ubuntu@minion1:~$ psql -h <rds-instance-name>
Password:
所以这一切都在发挥作用。问题是当我尝试从Kubernetes管理的容器内部建立连接时,我得到一个超时:
ubuntu@pod-1234:~$ psql -h <rds-instance-name>
…
为了让minion连接,我配置了一个对等连接,从Kubernetes VPC设置路由表,以便10.0.0.0/16
(RDS VPC的CIDR)映射到对等连接,并更新RDS实例的安全组允许从地址范围172.20.0.0/16
(Kubernetes VPC的CIDR)到端口5432的流量。
答案 0 :(得分:7)
在Kelsey Hightower的帮助下,我解决了这个问题。事实证明这是一个Docker路由问题。我在blog post中写了详细信息,但最重要的是改变了minions的路由表,如下所示:
$ sudo iptables -t nat -I POSTROUTING -d <RDS-IP-ADDRESS>/32 -o eth0 -j MASQUERADE
答案 1 :(得分:1)
您是否也修改了源/目的地检查?
由于您的实例将为您的子网分配的IP之外的IP发送和接收流量,因此您需要禁用源/目标检查。
查看图片: https://coreos.com/assets/images/media/aws-src-dst-check.png