Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Kubernetes:无法从EKS pod访问RDS Postgres_Amazon Web Services_Kubernetes_Amazon Eks - Fatal编程技术网

Amazon web services Kubernetes:无法从EKS pod访问RDS Postgres

Amazon web services Kubernetes:无法从EKS pod访问RDS Postgres,amazon-web-services,kubernetes,amazon-eks,Amazon Web Services,Kubernetes,Amazon Eks,我想在AWS上安装kubernetes。为此,我根据AWS官方教程创建了一个包含3个节点(t2.small)的EKS集群。然后我想运行一个pod,其中包含一些与Postgres(不同VPC中的RDS)通信的应用程序 但不幸的是,该应用程序没有连接到数据库 我所拥有的: EKS集群拥有自己的专有网络(CIDR:192.168.0.0/16) RDS(Postgres)拥有自己的专有网络(CIDR:172.30.0.0/16) 从RDS VPC启动到EKS VPC的对等连接 更新EKS集群3个公共子

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

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

我所拥有的:

  • EKS集群拥有自己的专有网络(CIDR:192.168.0.0/16)
  • RDS(Postgres)拥有自己的专有网络(CIDR:172.30.0.0/16)
  • 从RDS VPC启动到EKS VPC的对等连接
  • 更新EKS集群3个公共子网的路由表:添加目标为172.30.0.0/16的路由和步骤#3中的目标-对等连接
  • 更新RDS的路由表:添加目标192.168.0.0/16的路由和步骤3中的目标对等连接
  • 更新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
    
    然后我连接到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
    
    为了从POD访问RDS,我在EKS设置中错过了什么

    更新:

    我试图通过
    服务解决此问题

    apiVersion: v1
    kind: Service
    metadata:
      name: postgres-service
    spec:
      type: ExternalName
      externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
    
    所以我在EKS中创建了这个服务,然后尝试将
    postgres服务
    引用为DB URL,而不是直接的RDS主机地址

    此修复不起作用:(

    我提供的答案实际上也适用于您的案例


    这是关于使用的。还可以查看服务。

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

    谢谢您的提示!我将在明天返回服务器时检查它又是正常的internet!ExternalService对我不起作用。看起来我只是将原始DB地址映射到Kubernetes服务抽象:(你是否尝试在对等连接中启用“dns传播”?看起来你没有获得内部可路由的dns?@donkeyx这是一个很好的建议!这对我有帮助:)因此,请随意添加此评论作为对该问题的单独回答,我将投票并标记为正确答案!@Alex Fruzenshtein,您是否已通过启动DNS传播功能解决了此问题?@mk_sta yep。在我的情况下,k8s群集的吊舱无法与RDS通信,仅仅因为“DNS传播”在对等连接未启用的情况下,此DNS选项在创建PC后可用。