代码之家  ›  专栏  ›  技术社区  ›  Alex Fruzenshtein

Kubernetes:无法从EKS pod访问RDS Postgres

  •  0
  • Alex Fruzenshtein  · 技术社区  · 7 年前

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

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

    我所拥有的:

    1. RDS(Postgres)拥有自己的专有网络(CIDR:172.30.0.0/16)
    2. 从RDS VPC启动到EKS VPC的对等连接
    3. 更新RDS的路由表:添加目标为192.168.0.0/16的路由和步骤#3中的目标对等连接。

    完成所有这些步骤后,我执行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
    

    然后我连接到3个节点中的一个并执行一个命令:

    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
    

    更新:

    Service :

    apiVersion: v1
    kind: Service
    metadata:
      name: postgres-service
    spec:
      type: ExternalName
      externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
    

    所以我在EKS中创建了这个服务,然后尝试引用 postgres-service 作为数据库URL,而不是直接的RDS主机地址。

    此修复程序不起作用:(

    2 回复  |  直到 7 年前
        1
  •  10
  •   donkeyx    7 年前

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

        2
  •  0
  •   apisim    7 年前

    我提供的答案 here 可能也适用于你的情况。

    Services without selectors ExternalName

    推荐文章