Docker Kubernetes容器连接到单独VPC中的RDS实例

Docker Kubernetes容器连接到单独VPC中的RDS实例,docker,amazon-rds,kubernetes,amazon-vpc,Docker,Amazon Rds,Kubernetes,Amazon Vpc,我有一个Kubernetes集群在Amazon EC2的专有网络内运行,我正试图让停靠的服务连接到RDS数据库(位于不同的专有网络中)。我已经计算出了对等和路由表条目,因此我可以在minion机器上执行此操作: ubuntu@minion1:~$ psql -h <rds-instance-name> Password: ubuntu@minion1:~$psql-h 密码: 所以这些都起作用了。问题是,当我尝试从Kubernetes托管容器内部建立连接时,会出现超时: ubun

我有一个Kubernetes集群在Amazon EC2的专有网络内运行,我正试图让停靠的服务连接到RDS数据库(位于不同的专有网络中)。我已经计算出了对等和路由表条目,因此我可以在minion机器上执行此操作:

ubuntu@minion1:~$ psql -h <rds-instance-name>
Password:
ubuntu@minion1:~$psql-h
密码:
所以这些都起作用了。问题是,当我尝试从Kubernetes托管容器内部建立连接时,会出现超时:

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

为了让仆从连接,我配置了一个对等连接,从Kubernetes VPC设置路由表,以便
10.0.0/16
(RDS VPC的CIDR)映射到对等连接,并更新RDS实例的安全组,以允许从地址范围
172.20.0.0/16
(Kubernetes VPC的CIDR)。

您是否也修改了源/目标检查

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

如图所示:

在Kelsey Hightower的帮助下,我解决了这个问题。原来这是Docker的路线问题。我已经在a中写了详细信息,但底线是更改仆从的路线表,如下所示:

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

Source/dest.检查为“false”对于我的两个爪牙:p试图看看这是我的问题,还是我有另一个问题。这在k8s中5年后仍然是一个问题吗?看起来代码被重构了,包含的容器桥已经不存在了。我还列出了我的ip信息,没有看到!10.0.0.0/8规则。我猜他们更新了c的这部分除非其他人最近也遇到同样的问题?