Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow 具有命令行界面 (CLI),可用于执行任务,例如触发和管理 DAG、获取有关 DAG 运行和任务的信息、添加和删除连接和用户。
CLI 语法版本简介
Cloud Composer 1 中的 Airflow 为 CLI 命令提供两种不同的语法:
Airflow 1.10 CLI 语法,适用于采用 Airflow 1.10 的 Cloud Composer 环境。
Airflow 2 CLI 语法,适用于采用 Airflow 2 的 Cloud Composer 环境。
支持的 Airflow CLI 命令
如需查看支持的 Airflow CLI 命令的完整列表,请参阅 gcloud composer environments run
参考文档。
准备工作
您必须拥有足够的权限,才能将 Google Cloud CLI 与 Cloud Composer 搭配使用并运行 Airflow CLI 命令。
在 2.4.0 之前的 Cloud Composer 版本中,您需要访问环境集群的控制平面才能运行 Airflow CLI 命令。
运行 Airflow CLI 命令
要在您的环境中运行 Airflow CLI 命令,请使用 gcloud
:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
替换:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。- 将
SUBCOMMAND
替换为受支持的 Airflow CLI 命令之一。 - 将
SUBCOMMAND_ARGUMENTS
替换为 Airflow CLI 命令的参数。
子命令参数分隔符
使用 --
分隔指定的 Airflow CLI 命令的参数:
Airflow 2
对于 Airflow 2 CLI 语法:
- 将复合 CLI 命令指定为子命令。
- 在
--
分隔符后面指定复合命令的任何参数,作为子命令参数。
gcloud composer environments run example-environment \
dags list -- --output=json
Airflow 1
对于 Airflow 1.10 CLI 语法:
- 将 CLI 命令指定为子命令。
- 在
--
分隔符后面指定所有参数。
gcloud composer environments run example-environment \
list_dags -- --report
默认位置
大多数 gcloud composer
命令需要位置信息。您可以使用 --location
标志指定位置,也可以设置默认位置。
示例
例如,如需在 Cloud Composer 环境中触发名为 sample_quickstart
且 ID 为 5077
的 DAG,请使用以下命令:
Airflow 2
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
Airflow 1
gcloud composer environments run example-environment \
--location us-central1 trigger_dag -- sample_quickstart \
--run_id=5077
在专用 IP 环境中运行命令
如需在专用 IP 环境中运行 Airflow CLI 命令,请在可访问 GKE 集群的控制平面端点的机器上运行这些命令。您的选项可能会因专用集群配置而有所不同。
如果您环境的集群中停用了公共端点访问权限,则无法使用 gcloud composer
命令运行 Airflow CLI。如需能够运行 Airflow CLI 命令,请执行以下步骤:
- 在 VPC 网络中创建虚拟机
- 获取集群凭据。运行以下命令:
bash gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
- 使用
kubectl
运行 Airflow 命令。例如:
kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
--container airflow-scheduler -- airflow dags list
将 COMPOSER_NAMESPACE
替换为类似于 composer-2-0-28-airflow-2-3-394zxc12411
的命名空间。您可以在工作负载列表中或使用 kubectl get namespaces
命令找到 Cloud Composer。
如果环境的集群中启用了公共端点访问权限,您还可以从其外部 IP 地址已添加到已获授权的网络的机器运行 Airflow CLI 命令。如需启用从您的机器访问集群的功能,请将您机器的外部地址添加到环境的已获授权的网络列表中。
问题排查
无法连接到集群控制平面
运行 gcloud composer environments run
或 kubectl
命令时,您可能会遇到以下错误:
Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"
具体情况:此错误消息表示运行这些命令的计算机没有网络连接。
解决方法:请遵循在专用 IP 环境中运行命令部分中介绍的指南,或使用kubectl
命令超时部分中提供的说明。