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

Ben*_*aub 8 amazon-rds amazon-vpc docker kubernetes

我在自己的VPC中有一个在Amazon EC2中运行的Kubernetes集群,我正在尝试将Dockerized服务连接到RDS数据库(在不同的VPC中).我已经找到了对等和路由表条目,所以我可以从minion机器上做到这一点:

ubuntu@minion1:~$ psql -h <rds-instance-name>
Password:
Run Code Online (Sandbox Code Playgroud)

所以这一切都在发挥作用.问题是当我尝试从Kubernetes管理的容器内部建立连接时,我得到一个超时:

ubuntu@pod-1234:~$ psql -h <rds-instance-name>
…
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*aub 8

在Kelsey Hightower的帮助下,我解决了这个问题.事实证明这是一个Docker路由问题.我在博客文章中写了详细信息,但最重要的是改变了minions的路由表,如下所示:

$ sudo iptables -t nat -I POSTROUTING -d <RDS-IP-ADDRESS>/32 -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)