【问题标题】:Kubernetes container connection to RDS instance in separate VPCKubernetes 容器连接到单独 VPC 中的 RDS 实例
【发布时间】:2015-11-05 11:16:04
【问题描述】:

我有一个 Kubernetes 集群在其自己的 VPC 内的 Amazon EC2 中运行,我正在尝试让 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 的流量。

【问题讨论】:

    标签: docker amazon-rds kubernetes amazon-vpc


    【解决方案1】:

    在 Kelsey Hightower 的帮助下,我解决了这个问题。事实证明这是一个 Docker 路由问题。我已经在blog post 中写了详细信息,但最重要的是要像这样更改 minions 的路由表:

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

    【讨论】:

    • 试图看看这是我的问题,还是我有另一个问题。 5年后在k8s中这仍然是一个问题吗?看起来代码已被重构,并且包含的​​ container_bridge.go 不再存在。我还列出了我的 ip 信息,但在任何地方都没有看到 !10.0.0.0/8 规则。我猜他们更新了这部分代码,除非其他人最近遇到了同样的问题?
    【解决方案2】:

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

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

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

    【讨论】:

    • 来源/目的地。 check 对于我的两个奴才来说都是“假的”。 :P
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2019-07-25
    • 1970-01-01
    • 2019-05-12
    • 2014-05-09
    • 2019-06-29
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多