【问题标题】:Connect to Cloud SQL for PosgreSQL from Cloud Composer从 Cloud Composer 连接到 Cloud SQL for PostgreSQL
【发布时间】:2019-04-18 19:00:03
【问题描述】:

我的问题是关于配置 Google Cloud Composer 以使用同一 Google Cloud 项目中的相同网络配置访问 Google Cloud SQL。

执行使用配置了私有 IP 和默认端口 (5432) 的 PostgresOperator 进行连接的 DAG,我们总是得到相同的连接错误:

错误 - 无法连接到服务器:Connection timed ou 是 服务器在主机“private_ip”上运行并接受 TCP/IP 连接 5432端口

我们预计应该建立连接,因为我们已经配置了相同的网络,并且我们使用私有 IP 从 Composer 访问 Cloud SQL 服务器。

【问题讨论】:

    标签: google-cloud-platform google-cloud-sql google-kubernetes-engine google-cloud-composer


    【解决方案1】:

    根据Introducing private networking connection for Cloud SQL,这些仍然是两个独立的网段(参见那里的视觉方案)。因此需要VPC network peering,以获得可路由的私有IP。请参阅code lab,它也涵盖了这种情况。

    【讨论】:

    • 是有道理的,因为 Kubernes 工作人员是代表 Composer 创建的。我们将尝试并评论结果。谢谢。
    【解决方案2】:

    来自 Composer 的请求来自 pod 的 IP 地址,该地址在 VPC 之外是不可路由的。因此必须伪装成10.0.0.0/8节点的接口IP(使用默认网络时)。

    如果您在设置私有 IP 连接时将 CloudSQL 实例配置为使用自动生成的 IP 范围,则该 IP 很可能也在 10.0.0.0/8 中,但不在同一个 VPC 中。

    如果连接到 10.0.0.0/8 并且不在 VPC 中,则无法路由。作为一种解决方法,您可以创建一个自定义 address range,例如 192.168.X.X:

    gcloud beta compute addresses create [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK] \
    

    并将您的 Cloud SQL 实例的私有 IP 配置在该范围内。

    【讨论】:

    • 您还可以定期查看 Composer 的 release notes 以获取有关 Composer 可用的 VPC-native 集群的更新。
    【解决方案3】:

    Cloud SQL 代理是一个不错的选择,similar question,如果不一样,已经回答了有关设置的详细信息。

    要解决内部 IP 问题,请参阅Google docs

    您可以使用 Cloud SQL 代理连接到也配置为使用私有 IP 的实例。代理可以使用私有 IP 地址或公共 IP 地址进行连接。如果您使用 Cloud SQL 代理连接到同时分配了公共和私有 IP 地址的实例,则代理默认使用公共 IP 地址。

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2020-06-15
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2018-06-14
      • 1970-01-01
      相关资源
      最近更新 更多