首页 > 解决方案 > 如何让 kubernetes 资源成功连接到另一个 vpc 中的 RDS 实例

问题描述

背景:我在一个 AWS 账户中设置了一个 kubernetes 集群,它需要访问另一个账户中的 RDS MySQL 实例中的数据,我似乎无法正确设置以允许流量流动。

到目前为止我已经尝试过:

Kubernetes VPC 详细信息(请求者)

这包含容纳我的 kubernetes 集群的 3 个 EC2(看起来每个都有自己的子网)。我使用 EKS 进行设置。

我设置的路由表规则关联了 3 个子网,并将 RDS VPC CIDR 块指向对等连接。

RDS VPC 详细信息(接受者)

此 VPC 包含 mysql RDS 实例,以及一些其他资源。RDS 实例分配了相当多的 VPC 安全组,用于从我们的办公室 IP 等访问。它的 Public Accessibility 设置为 true。

我重复了路由表设置(反向)并指向 K8s VPC 子网/对等连接。

测试

为了测试连接,我尝试了 2 种不同的方法。需要访问mysql的应用程序是用node写的,所以我只写了一个测试连接器和示例查询,它超时了。

我还从 kubernetes 集群中运行的 pod 中的终端尝试了 netcat。

nc -v {{myclustername}}.us-east-1.rds.amazonaws.com 3306

这也超时。它似乎正在尝试访问正确的 mysql 实例 IP,所以我不确定这是否意味着我的路由规则在 k8s vpc 端正常工作。

DNS fwd/rev mismatch: ec2-XXX.compute-1.amazonaws.com != ip-{{IP OF MY MYSQL}}.ec2.internal

我不确定下一步要采取什么步骤。任何方向将不胜感激。

旁注:我已经阅读了这个Kubernetes 容器连接到单独 VPC 中的 RDS 实例, 我想我理解那里发生了什么。我的 CIDR 块与默认的 K8s ips (10.0 ... )不冲突,所以我的问题似乎有所不同。

标签: amazon-web-serviceskubernetesvpc

解决方案


我知道这是很久以前问过的,但我也遇到了这个问题。

原来我正在编辑错误的 AWS 路由表!当我跑去kops创建集群时,它创建了一个新的 VPC,它有自己的路由表,还有另一个路由表!我需要将对等连接路由添加到集群的路由表,而不是 VPC 的主路由表。

路由表


推荐阅读