我正在使用Google Cloud Composer,并创建了Composer环境。Composer环境已准备就绪(带有绿色的勾号),现在我正尝试使用Google Cloud Shell设置DAG python代码中使用的变量。
设置变量的命令:
gcloud composer environments run test-environment \
--location us-central1 variables -- \
--set gcp_project xxx-gcp
确切的错误消息:
ERROR: (gcloud.composer.environments.run) Desired GKE pod not found. If the environment was recently started, please wait and retry.
作为调查的一部分,我尝试了以下操作,但是每次都出现相同的错误。 我使用UI创建了一个新环境,而不是使用Google Shell命令。 我检查了kubernetes引擎中的Pod,它们都是绿色的,没有看到任何问题。 我验证了作曲者API,计费kubernetes,所有必需的API均已启用。
我分配了“编辑”角色。
添加了我第一次看到一些失败的截图
退出代码1错误 google故障排除指南描述:如果退出代码为1,则容器因应用程序崩溃而崩溃。
答案 0 :(得分:1)
如果您使用的google-cloud-sdk太旧,这是Composer 1.6.0版的副作用,因为它现在可以在default
以外的命名空间中启动pod。您看到的错误是looking for Kubernetes pods in the default namespace和failing to find them的结果。
要解决此问题,请运行gcloud components update
。如果您仍无法更新,执行Airflow命令的一种解决方法是自己手动SSH到pod并运行airflow
。首先,获取GKE群集凭据:
$ gcloud container clusters get-credentials $COMPOSER_GKE_CLUSTER_NAME
获得凭据后,您应该找到Pod在哪个名称空间中运行(也可以使用Cloud Console找到该名称空间):
$ kubectl get namespaces
NAME STATUS AGE
composer-1-6-0-airflow-1-9-0-6f89fdb7 Active 17h
default Active 17h
kube-public Active 17h
kube-system Active 17h
然后您可以通过SSH进入任何调度程序/工作程序窗格,并运行命令:
$ kubectl exec \
--namespace=$NAMESPACE \
-it airflow-worker-569bc59df5-x6jhl airflow list_dags -r
如果愿意,还可以打开外壳程序
$ kubectl exec \
--namespace=$NAMESPACE \
-it airflow-worker-569bc59df5-x6jhl bash
airflow@airflow-worker-569bc59df5-x6jhl:~$ airflow list_dags -r
失败的airflow-database-init-job
作业无关,不会在您的Composer环境中引起问题。