【问题标题】:How to setup Google Cloud Composer to be able to launch pods on a GKE Autopilot cluster如何设置 Google Cloud Composer 以便能够在 GKE Autopilot 集群上启动 pod
【发布时间】:2021-06-15 07:06:02
【问题描述】:

我希望能够使用 Google Cloud Composer 集群将 kubernetes pod 从其 DAG 启动到单独的 GKE Autopilot 集群,而不是 Cloud Composer 的 GKE 集群。

我创建了一个 GKE 自动驾驶仪集群,将“控制平面全局访问”设置为禁用,并且只允许某些授权网络连接到控制平面。 (基于documentation 中推荐的安全最佳实践)

我的 pod 都无法启动,并显示以下错误消息:

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='3X.XXX.XXX.XX6', port=443): Max retries exceeded with url: /api/v1/namespaces/sink/pods?labelSelector=dag_id%3Dtest_dag%2Cexecution_date%3D2021-03-17T212059.4745700000-f0b251c80%2Ctask_id%3Dtest_sync (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f0f3f6a4e80>: Failed to establish a new connection: [Errno 110] Connection timed out',)

我正在使用 GKEStartPodOperator,它以前能够在 GKE 集群上启动 pod,该集群是自我管理的(不是自动驾驶仪)并且没有禁用“控制平面全局访问”。

是否有任何关于如何设置 Composer 以连接到不公开对控制平面和启动 pod 的全局访问的 GKE 自动驾驶集群的文档?

【问题讨论】:

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


    【解决方案1】:

    即使使用 GKE Autopilot,您也可以使用最初为用于普通 GKE 集群而编写的同一组运算符,例如 GKEStartPodOperator。由于您看到的错误是 Kubernetes 控制平面超时,因此您的 authorized networks 设置很可能不包括您的 Cloud Composer 环境的工作人员使用的地址。

    如果您使用的是标准 Composer 环境(非私有 IP),则需要确保 GCP 范围包含在您的授权网络中(因为您环境的节点被分配了临时的公共地址)。

    如果您使用私有 IP 环境,则可以使用私有连接来访问 Kubernetes 控制平面,或者,您可以配置 Cloud NAT 以允许您的环境使用静态 IP 地址访问网络资源。在后一种情况下,NAT 的 IP 地址需要包含在您的授权网络设置中。

    【讨论】:

    • 感谢您的反馈。我怀疑是授权网络设置需要包含来自 Google 的 IP 范围。有没有什么地方可以找到这些 IP 范围? (它们是否被称为特定的东西?)或者我应该简单地包括 Composer 集群中工作节点的 IP 范围?
    • 我得到的最接近的是来自 GCP 文档gstatic.com/ipranges/cloud.json 的这个链接。我假设 GKE 工作人员的 IP 地址是内部地址,因此在使用标准 Composer 环境时没有帮助。
    猜你喜欢
    • 2022-01-20
    • 2022-01-04
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2019-12-04
    • 2021-09-28
    相关资源
    最近更新 更多