1

我正在部署一个 gitlab CI 管道来触发一个谷歌云作曲家 DAG 下面是我写的 .yaml:

stages:
- deploy

deploy:
  stage: deploy
  image: google/cloud-sdk
  script:
    - apt-get update && apt-get --only-upgrade install kubectl google-cloud-sdk
    - gcloud config set project $GCP_PROJECT_ID
    - gsutil cp   plugins/*.py   ${PLUGINS_BUCKET}
    - gsutil cp   dags/*.py   ${DAGS_BUCKET}
    - kubectl get pods
    - gcloud composer environments run ${COMPOSER_ENVIRONMENT}  --location ${ENVIRONMENT_LOCATION}   trigger_dag   -- ${DAG_NAME}

不幸的是,管道的执行失败并出现以下错误:

     $ gcloud config set project $GCP_PROJECT_ID
Updated property [core/project].
$ gsutil cp   plugins/*.py   ${PLUGINS_BUCKET}
Copying file://plugins/dataproc_custom_operators.py [Content-Type=text/x-python]...
/ [0 files][    0.0 B/  2.3 KiB]                                                
/ [1 files][  2.3 KiB/  2.3 KiB]                                                
Operation completed over 1 objects/2.3 KiB.                                      
$ gsutil cp   dags/*.py   ${DAGS_BUCKET}
copying file://dags/frrm_infdeos_workflow.py [Content-Type=text/x-python]...
/ [0 files][    0.0 B/  3.3 KiB]                                                
/ [1 files][  3.3 KiB/  3.3 KiB]                                                
Operation completed over 1 objects/3.3 KiB.                                      
$ gcloud composer environments run ${COMPOSER_ENVIRONMENT}  --location ${ENVIRONMENT_LOCATION}   trigger_dag   -- ${DAG_NAME}
kubeconfig entry generated for europe-west1-nameenvironment-a5456e0c-gke.
ERROR: (gcloud.composer.environments.run) No running GKE pods found. If the environment was recently started, please wait and retry.
ERROR: Job failed: command terminated with exit code 1

你知道如何解决这个问题吗?此致

4

2 回答 2

0

我和@scalacode 有同样的问题。对我来说,解决方案是 gitlab-runner 运行在与 Composer 环境不同的 GCP 项目中,因此它在没有指定该错误的情况下失败。在与 Composer 环境相同的项目中运行 gitlab-runner 解决了这个问题。

于 2019-01-17T19:48:00.133 回答
-1

Composer 似乎无法检索有关 pod/GKE 集群的信息。这可能有多种原因,从 GKE 集群未创建节点到 Pod 处于崩溃循环中。

我注意到在脚本中你没有“get-credentials”</a> 对集群进行身份验证。通过 CLI 在 GKE 集群上运行命令时,传统上您必须首先使用command对集群进行身份验证。用作曲家做到这一点:

gcloud composer environments describe ${COMPOSER_ENVIRONMENT} --location ${ENVIRONMENT_LOCATION} --format="get(config.gkeCluster)"

这将返回以下形式的内容:projects/PROJECT/zones/ZONE/clusters/CLUSTER 然后运行:

gcloud container clusters get-credentials ${CLUSTER} --zone ${ZONE}

在脚本中对集群进行身份验证后,查看它现在是否能够完成。如果没有,请尝试运行kubectl get pods以查看 pod 发生了什么/如果它们存在。

如果您看到许多 Pod 重新启动或通常不处于“正在运行/已完成”状态,则问题可能出在 Pod 配置上。如果您根本看不到 pod,则部署可能已失败。使用命令kubectl get deployments检查部署。

部署气流调度程序、气流-sqlproxy 和气流工作人员应该存在。如果这三个部署不存在,则环境可能已被篡改,并且最容易创建新环境。

于 2018-10-09T15:28:54.863 回答