排查环境创建问题

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

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

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

在创建 Cloud Composer 环境时 出现该问题的原因有以下几种:

  • 服务账号权限问题。

  • 防火墙、DNS 或路由信息不正确。

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

  • 与配额相关的问题。

  • 组织政策不兼容。

权限不足,无法创建环境

如果 Cloud Composer 由于您的账号权限不足而无法创建环境,它将输出以下错误消息:

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.

解决方案:将角色同时分配给您的账号和服务账号 如访问权限控制中所述,对您的环境进行管理。

  • 在 Cloud Composer 2 中,请确保未安装 Cloud Composer Service Agent 服务账号 (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com) 拥有 Cloud Composer v2 API Service Agent Extension 角色。

  • 确保已启用 Google APIs Service Agent (PROJECT_NUMBER@cloudservices.gserviceaccount.com) 拥有 Editor 角色。

  • 在共享 VPC 配置中,按照 配置共享 VPC 说明

环境的服务账号权限不足

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

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 角色的警告

如果环境创建失败,Cloud Composer 会生成 以下警告消息: The issue may be caused by missing IAM roles in the following Service Accounts ....

此警告消息会突出显示导致错误的可能原因。 Cloud Composer 会检查 如果不存在这些角色,则系统会生成此警告 消息。

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

在某些情况下,您可以忽略此警告。Cloud Composer 不 查看分配给角色的各个权限。例如,如果您使用 自定义 IAM 角色,那么服务账号也可以 已拥有所有必需的权限。在本课中, 则可以忽略此警告。

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

您可以为 Cloud Composer 指定 VPC 网络和子网 环境。如果您不指定 VPC 网络 Cloud Composer 服务会选择 default VPC 和 default 为环境的区域和可用区创建子网

如果指定的 VPC 网络和子网不存在,则 Cloud Composer 输出以下错误:

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"}}

解决方案

  • 在 Cloud Composer 2 中,您可以创建 使用 Private Service Connect 而不是 VPC 。
  • 在创建环境之前,请确保 VPC 网络 且新环境所属的子网已存在

网络配置不正确

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

如果您在共享 VPC 模式下配置 Cloud Composer 环境 也按照共享 VPC 说明进行操作。

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

您还可以在特定 GCE Networking 和 在 Cloud Logging 中设置 Subnetwork 个配置类别,看看是否有任何配置类别 创建环境期间报告的错误: Cloud Logging

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

在大规模网络中创建 Cloud Composer 环境时,您可能会遇到以下配额限制:

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

解决方案

组织政策不兼容

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

组织政策 Cloud Composer 3 Cloud Composer 2 Cloud Composer 1
compute.disableSerialPortLogging 允许任何值 必须停用 对于 1.13.0 之前的版本已停用;对于其他版本为任意值
compute.requireOsLogin 允许任何值 允许任何值 必须停用
compute.vmCanIpForward 允许任何值 允许任何值 如果不使用 VPC 原生模式(使用别名 IP),则必须允许(对 Cloud Composer 拥有的 GKE 集群而言是必需的) 已配置
compute.vmExternalIpAccess 允许任何值 对于公共 IP 环境,必须允许 对于公共 IP 环境,必须允许
compute.restrictVpcPeering 可强制执行 无法强制执行 无法强制执行
compute.disablePrivateServiceConnectCreationForConsumers 允许任何值 允许任何值 如果使用 Private Service Connect,则无法禁止“SERVICE_PRODUCERS”
compute.restrictPrivateServiceConnectProducer 启用后,将 google.com 组织列入许可名单 启用后,将 google.com 组织列入许可名单 允许任何值

如需了解详情,请参阅已知问题页面和 组织政策限制条件

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

组织或项目管理员可以限制可以接受的 Google 服务 将资源应用于自己的项目 gcp.restrictServiceUsage 组织政策限制条件。

使用此组织政策时,请务必 允许 Cloud Composer 所需的全部服务

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

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

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

Cloud Build 未能构建环境映像

适用于:Cloud Composer 2 和 Cloud Composer 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 角色。

后续步骤