Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)
本页介绍了如何更新环境。
更新操作简介
当您更改环境的参数(例如指定新的伸缩和性能参数,或安装自定义 PyPI 软件包)时,您的环境会更新。
此操作完成后,更改将在您的环境中生效。
对于单个 Managed Airflow 环境,您一次只能启动一项更新操作。您必须等待更新操作完成,然后才能启动另一项环境操作。
更新对正在运行的 Airflow 任务的影响
当您运行更新操作时,环境中的 Airflow 调度器和 工作器可能需要重启。在这种情况下,所有当前正在运行的任务都会终止。更新操作完成后,Airflow 会根据您为 DAG 配置重试的方式,安排这些任务进行重试。
以下更改会导致 Airflow 任务终止:
- 将环境升级到新版本。
- 添加、更改或删除自定义 PyPI 软件包。
- 更改 Managed Airflow 环境变量。
- 添加或移除 Airflow 配置选项替换,或更改其值。
- 更改 Airflow 工作器的 CPU、内存或存储空间。
减少 Airflow 工作器的数量上限(如果新值低于当前正在运行的工作器的数量)。例如,如果环境当前运行三个工作器,而上限减少到两个。
以下更改不会导致 Airflow 任务终止:
- 创建、更新或删除 DAG(不是更新操作)。
- 暂停或取消暂停 DAG(不是更新操作)。
- 更改 Airflow 变量(不是更新操作)。
- 更改 Airflow 连接(不是更新操作)。
- 启用或停用 Knowledge Catalog 数据沿袭集成。
- 更改环境的大小。
- 更改调度器的数量。
- 更改 Airflow 调度器的 CPU、内存或存储空间。
- 更改触发器的数量。
- 更改 Airflow 触发器的 CPU、内存或存储空间。
- 更改 Airflow Web 服务器的 CPU、内存或存储空间。
- 增加或减少工作器的数量下限。
- 减少 Airflow 工作器的数量上限。例如,如果环境当前运行两个工作器,而上限减少到三个。
- 更改维护窗口。
- 更改计划快照设置。
- 更改环境标签。
使用 Terraform 进行更新
在运行 terraform apply 之前运行 terraform plan,查看 Terraform 是否会创建新环境而不是更新现有环境。
准备工作
检查您的账号、环境的服务帐号以及项目中的 Managed Airflow 服务代理账号是否具有所需的权限:
您的账号必须具有 可以触发环境更新操作的角色。
环境的服务帐号必须具有 拥有足够权限来执行更新操作的角色。
操作完成后,
gcloud composer environments update命令即终止。您可以使用--async标志来避免等待操作完成。
更新环境
如需详细了解如何更新环境,请参阅其他有关特定更新操作的文档页面。例如:
查看环境详情
控制台
在 Google Cloud 控制台中,前往环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
gcloud
运行以下 gcloud 命令:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
您需要将其中的:
ENVIRONMENT_NAME替换为环境的名称。LOCATION替换为环境所在的区域。
API
构建 environments.get API 请求。
示例:
GET https://composer.googleapis.com/v1/projects/example-project/
locations/us-central1/environments/example-environment
Terraform
针对环境的资源运行 terraform state show 命令。
环境的 Terraform 资源的名称可能与环境的名称不同。
terraform state show google_composer_environment.RESOURCE_NAME
您需要将其中的:
RESOURCE_NAME替换为环境的资源的名称。
回滚更新更改
在某些极少数情况下,更新操作可能会中断(例如,由于超时),并且所请求的更改可能不会在所有环境组件(例如 Airflow Web 服务器)中回滚。
例如,更新操作可能会安装或移除额外的 PyPI 模块、重新定义或定义新的 Airflow 或 Managed Airflow 环境变量,或更改某些与 Airflow 相关的参数。
如果更新操作是在其他操作正在进行时触发的(例如 Managed Airflow 集群的自动扩缩或维护操作),则可能会发生这种情况。
在这种情况下,建议重复该操作。
更新或升级操作的持续时间
更新和升级操作的持续时间受以下因素影响:
大多数更新或升级操作都需要重启 Airflow 组件,例如 Airflow 调度器、工作器和 Web 服务器。重启组件后,必须对其进行初始化。在初始化期间,Airflow 调度器和工作器会从环境的存储桶中下载
/dags和/plugins文件夹的内容。将文件同步到 Airflow 调度器和工作器的过程不是即时的,具体取决于这些文件夹中所有对象的总大小和数量。我们建议您仅将 DAG 和插件文件保留在
/dags和/plugins文件夹中(分别),并移除所有其他文件。/dags和/plugins文件夹中的数据过多可能会减慢 Airflow 组件的初始化速度,在某些情况下可能会导致无法初始化。我们建议您将
/dags和/plugins文件夹中的数据量保持在 30 MB 以下,并且绝对不要超过 100 MB。如需了解详情,另请参阅 处理大量 DAG 和插件Airflow 数据库的大小可能会显著增加升级操作的时间。 我们建议您维护环境的 Airflow 数据库大小。
升级 GKE 节点的机器类型
您可以手动为环境的 GKE 集群升级机器类型,方法是删除现有的 default-pool,然后使用所需的机器类型创建一个新 default-pool。
我们建议您在创建环境时,针对 Managed Airflow 环境中发生的 计算类型指定合适的机器类型。
如果您运行的作业执行资源密集型计算,则可能 需要使用 GKE 运算符。
升级后,环境详情中仍会列出之前的机器类型。例如,“环境详情”页面不会反映新的机器类型。
控制台
如需升级机器类型,请执行以下操作:
在 Google Cloud 控制台中,前往环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
获取有关默认节点池的信息:
前往环境配置 标签页。
点击查看集群详情 链接。
在集群页面 的节点 部分中,点击 default-pool 。
请记下“节点池详情”页面上 default-pool 的所有信息。您将需要使用这些信息来为您的环境创建新的默认节点池。
如需删除 default-pool,请执行以下操作:
在节点池详情 页面上,点击返回箭头以返回到环境的集群 页面。
在节点池 部分中,点击 default-pool 的回收站图标。然后点击删除 以确认操作。
如需创建新的 default-pool ,请执行以下操作:
在集群 页面上,点击添加节点池 。
在“名称”部分,输入
default-pool。您必须使用default-pool名称,以便环境中的工作流可以在此池中运行。输入大小和节点设置。
(仅适用于默认 Compute Engine 服务账号)对于访问权限范围,选择授予对所有 Cloud API 的完整访问权限 。
点击保存 。
如果您发现工作负载分布不均匀, 请先将 airflow-worker 部署缩容为零负载,然后再重新对其进行纵向扩容。