Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本页面针对更新或升级 Cloud Composer 环境时可能遇到的问题提供了问题排查信息。
如需了解与创建环境相关的问题排查信息,请参阅排查环境创建问题。
在更新 Cloud Composer 环境时,导致大多数问题的原因如下:
- 服务账号权限问题
- PyPI 依赖项问题
- Airflow 数据库的大小
权限不足,无法更新或升级环境
如果 Cloud Composer 由于权限不足无法更新或升级环境,它将输出以下错误消息:
ERROR: (gcloud.composer.environments.update) PERMISSION_DENIED: The caller does not have permission
解决方案:如访问权限控制中所述,将角色分配给您的账号以及环境的服务账号。
环境的服务账号权限不足
创建 Cloud Composer 环境时,您需要指定一个服务账号来执行环境的大多数操作。如果此服务账号没有足够的权限来完成所请求的操作,Cloud Composer 会输出错误:
UPDATE operation on this environment failed 3 minutes ago with the
following error message:
Composer Backend timed out. Currently running tasks are [stage:
CP_COMPOSER_AGENT_RUNNING
description: "No agent response published."
response_timestamp {
seconds: 1618203503
nanos: 291000000
}
].
解决方案:如访问权限控制中所述,将角色分配给您的 Google 账号以及环境的服务账号。
Airflow 数据库太大,无法执行此操作
如果 Airflow 数据库太大导致升级操作无法完成,升级操作可能不会成功。
如果 Airflow 数据库的大小超过 20 GB,Cloud Composer 会输出以下错误:
Airflow database uses more than 20 GB. Please clean the database before upgrading.
解决方案:执行 Airflow 数据库清理,如清理 Airflow 数据库中所述。
由于 PyPI 软件包冲突,升级到新的 Cloud Composer 版本失败
使用已安装的自定义 PyPI 软件包升级环境时,您可能会遇到与 PyPI 软件包冲突相关的错误。出现此错误,可能是因为新的 Airflow build 包含较新版本的预安装软件包。这可能会导致与您在环境中安装的 PyPI 软件包发生依赖项冲突。
解决方案:
- 如需获取关于软件包冲突的详细信息,请运行升级检查。
- 放宽已安装的自定义 PyPI 软件包的版本限制条件。例如,您可以将版本指定为
>=1.0.1
,而不是==1.0.1
。 - 如需详细了解如何更改版本要求来解决依赖项冲突问题,请参阅 pip 文档。
检查迁移失败警告
将 Airflow 升级到更高版本时,系统有时会对 Airflow 数据库应用新的约束条件。如果无法应用这些约束条件,Airflow 会创建新表来存储无法应用约束条件的行。在移动的数据表重命名或被删除之前,Airflow 界面会显示一条警告消息。
解决方案:
您可以使用以下两个 DAG 来检查已移动的数据并重命名表。
list_moved_tables_after_upgrade_dag
DAG 会列出从无法应用约束条件的每个表中移出的行。检查数据,然后决定是否要保留。如需保留该数据,您需要手动修正 Airflow 数据库中的数据。例如,通过使用正确的数据重新添加行。
如果您不需要这些数据,或者已修正这些数据,则可以运行 rename_moved_tables_after_upgrade_dag
DAG。此 DAG 会重命名已移动的表。表及其数据不会被删除,因此您可以稍后查看这些数据。