【问题标题】:Kubernetes google cloud composer with gitlab ci yaml file带有 gitlab ci yaml 文件的 Kubernetes 谷歌云作曲家
【发布时间】:2018-10-05 08:06:00
【问题描述】:

我正在部署一个 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

请问您知道如何解决这个问题吗? 最好的问候

【问题讨论】:

    标签: gitlab-ci-runner google-kubernetes-engine google-cloud-composer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      我在脚本中注意到您没有 “get-credentials” 对集群进行身份验证。通过 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 和气流工作程序。如果这三个部署不存在,则环境可能已被篡改,并且最容易创建新环境。

      【讨论】:

      • @scalacode,这解决了你的问题吗?如果没有,您采取了哪些措施来解决它。我也有这个问题。
      • 正在首先使用服务帐户进行身份验证,但仍然遇到问题。我跑了kubectl get pods --all-namespaceskubectl get deployments --all-namespaces,它们都返回了活动的pod/部署,包括你列出的那些。问题出在其他地方。
      • 从 Cloud Composer 运行 get-credentials 时,出现以下错误:ERROR: gcloud crashed (AttributeError): 'NoneType' object has no attribute 'split' 并且相同的命令在本地运行。
      猜你喜欢
      • 2021-05-22
      • 1970-01-01
      • 2020-06-29
      • 2021-11-06
      • 2016-02-02
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2019-01-29
      相关资源
      最近更新 更多