排查环境创建问题

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

本页面针对创建 Managed Airflow 环境时可能遇到的问题提供了问题排查信息。

如需了解与更新和升级环境相关的问题排查信息, 请参阅 排查环境更新和升级问题

在创建 Managed Airflow 环境时,导致大多数问题的原因如下:

  • 服务账号权限问题。

  • 防火墙、DNS 或路由信息错误。

  • 与网络相关的问题。例如,无效的 VPC 配置、IP 地址冲突或网络 IP 范围过窄。

  • 与配额相关的问题。

  • 组织政策不兼容。

权限不足,无法创建环境

如果 Managed Airflow 无法创建环境,因为您的账号权限不足,则会输出以下错误消息:

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: The caller
does not have permission

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: User not
authorized to act as service account <service-account-name>.
The user must be granted iam.serviceAccounts.actAs permission, included in
Owner, Editor, Service Account User role. See https://cloud.google.com/iam/docs
/understanding-service-accounts for additional details.

解决方案:如访问权限控制中所述,将角色分配给您的账号以及环境的服务帐号 。

  • 在 Managed Airflow (第 2 代) 中,请确保 Cloud Composer Service Agent 服务帐号 (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com) 已分配 Cloud Composer v2 API Service Agent Extension 角色。

  • 确保 Google APIs 服务代理 (PROJECT_NUMBER@cloudservices.gserviceaccount.com) 已分配 Editor 角色。

  • 在共享 VPC 配置中,请按照 配置共享 VPC 说明进行操作。

环境的服务帐号权限不足

创建 Managed Airflow 环境时,您需要指定运行环境的 GKE 集群节点的服务账号。如果此服务帐号没有足够的权限来执行所请求的操作,Managed Airflow 会输出以下错误:

Errors in: [Web server]; Error messages:
  Creation of airflow web server version failed. This may be an intermittent
  issue of the App Engine service. You may retry the operation later.
{"ResourceType":"appengine.v1.version","ResourceErrorCode":"504","ResourceError
Message":"Your deployment has failed to become healthy in the allotted time
and therefore was rolled back. If you believe this was an error, try adjusting
the 'app_start_timeout_sec' setting in the 'readiness_check' section."}

解决方案:如访问权限控制中所述,将角色分配给您的账号以及环境的服务帐号 。

有关服务账号中缺少 IAM 角色的警告

当环境创建失败时,Managed Airflow 会在发生错误后生成以下警告消息: The issue may be caused by missing IAM roles in the following Service Accounts ...

此警告消息突出了错误的可能原因。 Managed Airflow 会检查项目中的服务账号是否具有所需角色,如果缺少这些角色,则会生成此警告消息。

解决方案:检查警告消息中提及的服务账号是否具有 所需角色。如需详细了解 Managed Airflow 中的角色和权限,请参阅访问权限控制

在某些情况下,您可以忽略此警告。Managed Airflow 不会检查分配给角色的各个权限。例如,如果您使用自定义 IAM 角色,则警告消息中提及的服务帐号可能已拥有所有必需的权限。在这种情况下,您可以忽略此警告。

为环境选择的 VPC 网络不存在

您可以在创建 Managed Airflow 环境时指定 VPC 网络和子网。如果您未指定 VPC 网络,则 Managed Airflow 服务会为环境的区域和可用区选择 default VPC 和 default 子网。

如果指定的 VPC 网络和子网不存在,Managed Airflow 将输出以下错误:

Errors in: [GKE cluster]; Error messages:
        {"ResourceType":"gcp-types/container-v1:projects.locations.clusters","R
        esourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"P
        roject \"<your composer project>\" has no network named \"non-existing-
        vpc\".","status":"INVALID_ARGUMENT","statusMessage":"Bad
        Request","requestPath":"https://container.googleapis.com/
        v1/projects/<your composer
        project>/locations/<zone>/clusters","httpMethod":"POST"}}

解决方案

网络配置不正确

创建 Managed Service for Apache Airflow 环境需要正确的网络或 DNS 配置。请按照以下说明配置与 Google API 和服务的连接:

如果您在共享 VPC 模式下配置 Managed Service for Apache Airflow 环境,请同时按照 共享 VPC 说明进行操作。

Managed Service for Apache Airflow 环境使用子网作为集群节点,并使用 IP 范围作为 Pod 和服务。为确保与这些 IP 范围和其他 IP 范围进行通信,请按照以下说明配置防火墙规则:

您还可以在 Cloud Logging 中检查所选 GCE NetworkingSubnetwork 配置类别中的任何日志条目,以查看环境创建期间是否报告了任何 错误: Cloud Logging

在大规模网络中创建环境时遇到配额问题

在大规模网络中创建 Managed Service for Apache Airflow 环境时,您可能会遇到以下配额限制:

  • 已达到每个 VPC 网络的 VPC 对等互连数上限。
  • 已达到主要和次要子网 IP 范围数上限。
  • 已达到对等互连组中用于内部 TCP/UDP 负载平衡的转发规则数上限。

解决方案

组织政策不兼容

您必须适当配置以下政策,才能成功创建 Managed Airflow 环境。

组织政策 Managed Airflow(第 3 代) Managed Airflow(第 2 代) Managed Airflow(旧版第 1 代)
compute.disableSerialPortLogging 允许任何值 必须停用 对于 1.13.0 之前的版本已停用;对于其他版本为任意值
compute.requireOsLogin 允许任何值 允许任何值 必须停用
compute.vmCanIpForward 允许任何值 允许任何值 如果未配置 VPC 原生模式(使用别名 IP),则必须允许(该政策对于 Managed Airflow 拥有的 GKE 集群是必需的)
compute.vmExternalIpAccess 允许任何值 对于公共 IP 环境,必须允许 对于公共 IP 环境,必须允许
compute.restrictVpcPeering 可以强制执行 无法强制执行 无法强制执行
compute.disablePrivateServiceConnectCreationForConsumers 允许任何值 无法禁止专用 IP 和公共 IP 环境的 SERVICE_PRODUCERS。 不影响现有环境,启用此政策后,现有环境可以正常运行。 无法禁止专用 IP 环境的 SERVICE_PRODUCERS。 不影响现有环境,启用此政策后,现有环境可以正常运行。
compute.restrictPrivateServiceConnectProducer 启用后,将 google.com 组织列入许可名单 启用后,将 google.com 组织列入许可名单 允许任何值

主账号访问权限边界政策不兼容

您在组织中配置的 主账号访问权限边界政策 可能会以阻止环境的某些操作或阻止创建新环境的方式进行配置。

如果是这种情况,您可能会在错误消息中看到以下行:

Operations on resource are denied due to an IAM Principal Access Boundary Policy.

环境的组件位于 租户和客户项目中。租户项目由 Google 管理,不属于环境所在的组织。环境的 服务账号必须有 权在租户项目中执行操作。

解决方案

限制组织或项目内使用的服务

组织或项目管理员可以使用 gcp.restrictServiceUsage 组织政策限制条件来限制其项目中可以使用哪些 Google 服务。

使用此组织政策时,请务必 允许 Managed Airflow 所需的所有服务

400 错误消息:部署 Airflow Web 服务器失败。

此错误可能是由于 IP 范围重叠而未能创建专用 IP 环境的 GKE 集群而导致的。

解决方案:检查日志中是否存在有关环境集群的任何故障,并 根据相应的 GKE 错误消息解决问题。

Cloud Build 无法构建环境映像

适用于:Managed Airflow(第 2 代)和 Managed Airflow(旧版第 1 代)。

如果 Cloud Build 服务帐号 (PROJECT_NUMBER@cloudbuild.gserviceaccount.com) 在您的项目中没有 Cloud Build Service Account (roles/cloudbuild.builds.builder) 角色,则尝试创建或更新环境可能会因权限相关错误而失败。

例如,您可能会在 denied: Permission "artifactregistry.repositories.uploadArtifacts" denied 消息后看到ERROR: failed to push because we ran out of retries,位于 Cloud Build 日志中。

如需解决此问题,请确保 Cloud Build 服务帐号具有 Cloud Build Service Account 角色。

后续步骤