Kubernetes:无法从EKS pod到RDS Postgres

Ale*_*ein 4 amazon-web-services kubernetes aws-eks

我正在尝试在AWS上设置kubernetes。为此,我根据官方的AWS教程创建了一个具有3个节点(t2.small)的EKS集群。然后,我想用一些与Postgres(不同VPC中的RDS)通信的应用程序运行一个pod。

但不幸的是,该应用程序未连接到数据库。

是)我有的:

  1. 具有自己的VPC的EKS群集(CIDR:192.168.0.0/16)
  2. 具有自己的VPC的RDS(Postgres)(CIDR:172.30.0.0/16)
  3. 从RDS VPC到EKS VPC的对等连接已启动
  4. 更新了EKS群集的3个公共子网的路由表:添加了目的地为172.30.0.0/16和目标为#3的对等连接的路由。
  5. RDS的路由表已更新:目的地为192.168.0.0/16且目标为目标的路由—添加了来自步骤3的对等连接。
  6. RDS安全组已更新,添加了新的入站规则:允许来自192.168.0.0/16的所有流量

完成所有这些步骤后,我执行kubectl命令:

kubectl exec -it my-pod-app-6vkgm nslookup rds-vpc.unique_id.us-east-1.rds.amazonaws.com
nslookup: can't resolve '(null)': Name does not resolve

Name:      rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Address 1: 52.0.109.113 ec2-52-0-109-113.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

然后,我连接到三个节点之一并执行命令:

getent hosts rds-vpc.unique_id.us-east-1.rds.amazonaws.com
52.0.109.113    ec2-52-0-109-113.compute-1.amazonaws.com rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

为了从Pod访问RDS,我在EKS设置中错过了什么?

更新:

我试图通过以下方法解决此问题Service

apiVersion: v1
kind: Service
metadata:
  name: postgres-service
spec:
  type: ExternalName
  externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

因此,我在EKS中创建了此服务,然后尝试将其postgres-service称为DB URL而不是直接RDS主机地址。

此修复程序无效:(

don*_*eyx 6

您是否尝试在对等连接中启用“ dns传播”?看来您没有获得内部可路由的dns。您可以通过进入对等连接设置并选中dns传播复选框来启用它。我通常会执行我控制的所有对等连接。