gcloud composer 命令失败 "executable file not found in $PATH"
gcloud composer command fails "executable file not found in $PATH"
我正在尝试 运行 在 Cloud Composer 上回填一个 Airflow DAG。我错过了什么吗?
$ gcloud composer environments run myenv \
--location us-central1 --project myproject \
backfill -- -s 2020-10-05T10:30 -e 2020-10-05T10:30 \
-x -I mydag
kubeconfig entry generated for us-central1-myenv-xxx-gke.
Executing within the following kubectl namespace: xxx
command terminated with exit code 126
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process
caused "exec: \"-s\": executable file not found in $PATH": unknown
ERROR: (gcloud.composer.environments.run) kubectl returned non-zero status code.
我正在使用以下版本的 CLI 工具。
$ gcloud version
Google Cloud SDK 286.0.0
bq 2.0.55
core 2020.03.24
gsutil 4.48
Composer 映像版本为 composer-1.8.3-airflow-1.10.3
。
谢谢。
试试老版本的gcloudsdk,比如283.0.0
我的287.0.0版本也有同样的问题
返回使用版本 283.0.0 后,一切正常。
为了更深入地调查 Airflow GKE 容器 runtime 中的问题,我建议调用 gcloud composer environments run
命令,切换到 debug
级别的输出详细程度。
gcloud composer environments run myenv --location us-central1 --project myproject --verbosity=debug backfill -- -s 2020-10-05T10:30 -e 2020-10-05T10:30 -x -I mydag
打印出的命令可能会提供获取调试条目的机会,使用kubectl
命令行组合研究记录:
DEBUG: Executing command: [u'/google/google-cloud-sdk/bin/kubectl',
u'--namespace', u'composer-1-8-3-airflow-1-10-3-xxxxxx', u'exec',
u'airflow-worker-xxxxxxxx', u'-tic', u'airflow-worker', u'airflow',
u'backfill', u'--', u'-s', u'2020-10-05T10:30', u'-e',
u'2020-10-05T10:30', u'-x', u'-I', u'test_dag']
以上输出反映了 gcloud
如何解耦命令行参数,将它们分派给 kubectl
命令继承者的方式。接下来,您可以根据这些参数手动组合 kubectl
对特定 Airflow worker Pod 的命令调用:
kubectl --namespace composer-1-8-3-airflow-1-10-3-xxxxxx exec airflow-worker-xxxxxxxx -tic airflow-worker airflow backfill -- -s 2020-10-05T10:30 -e 2020-10-05T10:30 -x -I test_dag
根据评论对话,其中提到您能够通过 kubectl
调用挂钩成功发出 Airflow backfill 命令,我可以假设问题可能与检索到的不正确参数有关从顶部 gcloud
由 kubectl
前任。
您甚至可以尝试分别用 --start_date
和 --end_date
替换 -s
、-e
位置参数,因为由于某些未知原因 GKE 嵌套了 OCI运行时在错误消息中将 -s
识别为执行文件。
该错误是由 kubectl exec
中最近的更改引起的,该更改导致仅选项 (--
) 结束后的标记被解释为可执行文件。由于 gcloud composer environments run
内部使用 kubectl
,您可以回滚到 kubectl
的旧版本作为解决方法(将其安装为 gcloud
组件的用户 - 您可以使用 gcloud components restore
).
此问题已在 Cloud SDK 版本 288.0.0 中得到解决。至少更新到此版本以解决问题(您 不需要 需要更新 kubectl
)。 运行 更新以下内容:
gcloud components update
安装最新的 google 云 SDK 和 Kubectl 解决了问题
sudo apt-get install kubectl
sudo apt-get install google-cloud-sdk
我正在尝试 运行 在 Cloud Composer 上回填一个 Airflow DAG。我错过了什么吗?
$ gcloud composer environments run myenv \
--location us-central1 --project myproject \
backfill -- -s 2020-10-05T10:30 -e 2020-10-05T10:30 \
-x -I mydag
kubeconfig entry generated for us-central1-myenv-xxx-gke.
Executing within the following kubectl namespace: xxx
command terminated with exit code 126
OCI runtime exec failed: exec failed: container_linux.go:345: starting container process
caused "exec: \"-s\": executable file not found in $PATH": unknown
ERROR: (gcloud.composer.environments.run) kubectl returned non-zero status code.
我正在使用以下版本的 CLI 工具。
$ gcloud version
Google Cloud SDK 286.0.0
bq 2.0.55
core 2020.03.24
gsutil 4.48
Composer 映像版本为 composer-1.8.3-airflow-1.10.3
。
谢谢。
试试老版本的gcloudsdk,比如283.0.0
我的287.0.0版本也有同样的问题 返回使用版本 283.0.0 后,一切正常。
为了更深入地调查 Airflow GKE 容器 runtime 中的问题,我建议调用 gcloud composer environments run
命令,切换到 debug
级别的输出详细程度。
gcloud composer environments run myenv --location us-central1 --project myproject --verbosity=debug backfill -- -s 2020-10-05T10:30 -e 2020-10-05T10:30 -x -I mydag
打印出的命令可能会提供获取调试条目的机会,使用kubectl
命令行组合研究记录:
DEBUG: Executing command: [u'/google/google-cloud-sdk/bin/kubectl', u'--namespace', u'composer-1-8-3-airflow-1-10-3-xxxxxx', u'exec', u'airflow-worker-xxxxxxxx', u'-tic', u'airflow-worker', u'airflow', u'backfill', u'--', u'-s', u'2020-10-05T10:30', u'-e', u'2020-10-05T10:30', u'-x', u'-I', u'test_dag']
以上输出反映了 gcloud
如何解耦命令行参数,将它们分派给 kubectl
命令继承者的方式。接下来,您可以根据这些参数手动组合 kubectl
对特定 Airflow worker Pod 的命令调用:
kubectl --namespace composer-1-8-3-airflow-1-10-3-xxxxxx exec airflow-worker-xxxxxxxx -tic airflow-worker airflow backfill -- -s 2020-10-05T10:30 -e 2020-10-05T10:30 -x -I test_dag
根据评论对话,其中提到您能够通过 kubectl
调用挂钩成功发出 Airflow backfill 命令,我可以假设问题可能与检索到的不正确参数有关从顶部 gcloud
由 kubectl
前任。
您甚至可以尝试分别用 --start_date
和 --end_date
替换 -s
、-e
位置参数,因为由于某些未知原因 GKE 嵌套了 OCI运行时在错误消息中将 -s
识别为执行文件。
该错误是由 kubectl exec
中最近的更改引起的,该更改导致仅选项 (--
) 结束后的标记被解释为可执行文件。由于 gcloud composer environments run
内部使用 kubectl
,您可以回滚到 kubectl
的旧版本作为解决方法(将其安装为 gcloud
组件的用户 - 您可以使用 gcloud components restore
).
此问题已在 Cloud SDK 版本 288.0.0 中得到解决。至少更新到此版本以解决问题(您 不需要 需要更新 kubectl
)。 运行 更新以下内容:
gcloud components update
安装最新的 google 云 SDK 和 Kubectl 解决了问题
sudo apt-get install kubectl
sudo apt-get install google-cloud-sdk