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 Airflow(第 2 代)中,您可以创建使用 Private Service Connect 而不是 VPC 网络的环境。
- 创建环境之前,请确保新环境的 VPC 网络和子网已经存在。
网络配置不正确
创建 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 Networking 和
Subnetwork 配置类别中的任何日志条目,以查看环境创建期间是否报告了任何
错误:
Cloud Logging
在大规模网络中创建环境时遇到配额问题
在大规模网络中创建 Managed Service for Apache Airflow 环境时,您可能会遇到以下配额限制:
- 已达到每个 VPC 网络的 VPC 对等互连数上限。
- 已达到主要和次要子网 IP 范围数上限。
- 已达到对等互连组中用于内部 TCP/UDP 负载平衡的转发规则数上限。
解决方案:
- 在 Managed Airflow(第 2 代)中,您可以创建使用 Private Service Connect 而不是 VPC 网络的环境。
- 在 Managed Airflow(旧版第 1 代)中,使用大规模网络中的 Managed Airflow 的推荐方法。
组织政策不兼容
您必须适当配置以下政策,才能成功创建 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 管理,不属于环境所在的组织。环境的 服务账号必须有 权在租户项目中执行操作。
解决方案:
- 向政策的绑定添加条件表达式,以将环境的服务帐号从政策中排除。如需查看如何 排除主账号以使政策不适用于该主账号的示例,请参阅 Identity and Access Management 文档中的主账号访问权限边界政策的条件政策绑定 。
限制组织或项目内使用的服务
组织或项目管理员可以使用
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 角色。