Airflow gcloud composer命令失败";在$PATH中找不到可执行文件;

Airflow gcloud composer命令失败";在$PATH中找不到可执行文件;,airflow,google-cloud-composer,Airflow,Google Cloud Composer,我正在尝试在Cloud Composer上运行气流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-xx

我正在尝试在Cloud Composer上运行气流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后,一切正常。

尝试使用gcloudsdk的旧版本,如283.0.0

我在版本287.0.0上也有同样的问题
回到使用版本283.0.0后,一切正常。

为了深入调查Afflow GKE容器中的问题,我建议调用
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
命令行组合搜索记录:

调试:执行命令:[u'/google/googlecloudsdk/bin/kubectl', u'--namespace',u'composer-1-8-3-afflow-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', u'2020-10-05T10:30',u'-x',u'-I',u'test_dag']

上面的输出反映了
gcloud
如何解耦命令行参数,将它们分配给
kubectl
命令继承器。接下来,您可以根据以下参数手动编写对特定气流工作者吊舱的
kubectl
命令调用:

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
call hook成功发出气流命令,我可以假设问题可能与
kubectl
前任从top
gcloud
检索到的错误参数有关


您甚至可以尝试分别用
--start\u date
--end\u date
替换
-s
-e
位置参数,由于未知原因,GKE嵌套OCI运行时在错误消息中将
-s
识别为执行文件。

为了深入调查GKE容器中的问题,我建议调用
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
命令行组合搜索记录:

调试:执行命令:[u'/google/googlecloudsdk/bin/kubectl', u'--namespace',u'composer-1-8-3-afflow-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', u'2020-10-05T10:30',u'-x',u'-I',u'test_dag']

上面的输出反映了
gcloud
如何解耦命令行参数,将它们分配给
kubectl
命令继承器。接下来,您可以根据以下参数手动编写对特定气流工作者吊舱的
kubectl
命令调用:

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
call hook成功发出气流命令,我可以假设问题可能与
kubectl
前任从top
gcloud
检索到的错误参数有关


您甚至可以尝试分别用
--start\u date
--end\u date
替换
-s
-e
位置参数,由于未知原因,GKE嵌套OCI运行时在错误消息中将
-s
识别为执行文件。

该错误是由
kubectl exec
中最近的更改引起的,该更改仅导致选项结束后的令牌(
--
)被解释为可执行文件。由于
gcloud composer环境在内部运行
使用
kubectl
,因此可以回滚到较旧版本的
kubectl
作为解决方法(将其作为
gcloud
组件安装的用户可以使用)

这在CloudSDK 288.0.0版中得到了解决。至少更新到此版本以修复此问题(您不需要更新
kubectl
)。运行以下命令以更新:

gcloud components update

该错误是由最近在
kubectl exec
中的更改引起的,该更改仅导致选项结束(
--
)后的令牌被解释为可执行文件。由于
gcloud composer环境在内部运行
使用
kubectl
,因此可以回滚到较旧版本的
kubectl
作为解决方法(将其作为
gcloud
组件安装的用户可以使用)

这在CloudSDK 288.0.0版中得到了解决。至少更新到此版本以修复此问题(您不需要更新
kubectl
)。运行以下命令以更新:

gcloud components update

安装最新的google cloud SDK和Kubectl解决了这个问题

sudo apt-get install kubectl
sudo apt-get install google-cloud-sdk

安装最新的google cloud SDK和Kubectl解决了这个问题

sudo apt-get install kubectl
sudo apt-get install google-cloud-sdk

您是否已尝试通过所述的
kubectl
命令行工具直接连接到气流工人并在特定Pod内执行?是的,它可以工作,但我的问题是为什么该命令失败。您是否已尝试通过所述的
kubectl
命令行工具直接连接到气流工人并在Pod内执行特定的Pod?是的,它可以工作,但我的问题是为什么这个命令失败。