未找到所需的 GKE pod,谷歌云作曲家

Tok*_*kci 1 google-cloud-platform kubernetes google-kubernetes-engine airflow google-cloud-composer

我正在使用谷歌云作曲家,并创建了作曲家环境。作曲家环境准备好了(有绿色勾号),现在我正在尝试使用谷歌云外壳设置 DAG python 代码中使用的变量。

设置变量的命令:

     gcloud composer environments run test-environment \
       --location us-central1 variables -- \
       --set gcp_project xxx-gcp
Run Code Online (Sandbox Code Playgroud)

确切的错误信息:

  ERROR: (gcloud.composer.environments.run) Desired GKE pod not found. If the environment was recently started, please wait and retry.
Run Code Online (Sandbox Code Playgroud)

我尝试将事情作为调查的一部分,但每次都遇到相同的错误。我使用 UI 而不是 google shell 命令创建了一个新环境。我检查了 kubernetes 引擎中的 pod,都是绿色的,没有发现任何问题。我验证了 Composer API、Billing kubernetes,所有必需的 API 都已启用。

我分配了“编辑”角色。

添加了我第一次看到一些失败的截图

在此处输入图片说明

在此处输入图片说明

错误退出代码 1 谷歌故障排除指南描述:如果退出代码为 1,则容器因应用程序崩溃而崩溃。

hex*_*ide 6

如果您使用的google-cloud-sdk太旧,这是 Composer 1.6.0 版的副作用,因为它现在在default. 您看到的错误是在默认命名空间查找 Kubernetes pod没有找到它们的结果

要解决此问题,请运行gcloud components update. 如果您还不能更新,执行 Airflow 命令的解决方法是自己手动 SSH 到 pod 并运行airflow. 首先,获取 GKE 集群凭据:

$ gcloud container clusters get-credentials $COMPOSER_GKE_CLUSTER_NAME
Run Code Online (Sandbox Code Playgroud)

获得凭据后,您应该会找到 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
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过 SSH 连接到任何调度程序/工作程序 pod,并运行命令:

$ kubectl exec \
    --namespace=$NAMESPACE \
    -it airflow-worker-569bc59df5-x6jhl airflow list_dags -r
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以打开一个 shell:

$ kubectl exec \
    --namespace=$NAMESPACE \
    -it airflow-worker-569bc59df5-x6jhl bash

airflow@airflow-worker-569bc59df5-x6jhl:~$ airflow list_dags -r
Run Code Online (Sandbox Code Playgroud)

失败的airflow-database-init-job作业是不相关的,不会在您的 Composer 环境中引起问题。