是否可以在某些时间关闭VM托管google-cloud-composer的主机?

时间:2018-10-22 12:40:12

标签: airflow google-cloud-composer

为了减少与运行google-cloud-composer相关的账单,我想知道是否有可能在特定时间关闭运行虚拟环境的VM实例的可能性。例如:我们的大多数DAG都在早晨或下午运行,因此我们希望在晚上甚至可能在午间关闭VM。我知道我们可以从Google云控制台手动禁用环境,但是最好找到一种自动执行此操作的方法

谢谢!

2 个答案:

答案 0 :(得分:2)

很遗憾,无法使用Google Cloud Platform以编程方式对此进行配置。最好的选择是从另一个主机作为cronjob运行脚本,当不使用Composer环境时,该脚本将打开或关闭Composer环境。

答案 1 :(得分:0)

我们已经并行建立了一个很小的k8s集群,并使用CronJob部署来管理将池节点缩小到0,然后使用第二个cronjob来恢复它。

部署是这样的(上下更改节点数)。您可以将操作更改为正在处理VM的操作(是否通过控制台中的Compute暂停实例?)

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: disable-composer
spec:
  schedule: "0 10 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: enable-composer
            image: google/cloud-sdk:latest
            volumeMounts:
            - name: google-app-credentials-volume
              mountPath: /etc/gcp
              readOnly: true
            env:
            - name: GOOGLE_APPLICATION_CREDENTIALS
              value: /etc/gcp/credentials.json
            args:
            - /bin/bash
            - -c 
            - gcloud auth activate-service-account service-account@gcp-project.iam.gserviceaccount.com --key-file=$GOOGLE_APPLICATION_CREDENTIALS; COMPOSER_ENV=composer-environment-name; COMPOSER_LOCATION=us-central1; COMPOSER_CLUSTER=`gcloud composer environments describe $COMPOSER_ENV --format="csv[no-heading](config.gkeCluster)" --location $COMPOSER_LOCATION | cut -d '/' -f 6`; COMPOSER_ZONE=`gcloud composer environments describe $COMPOSER_ENV --format="csv[no-heading](config.nodeConfig.location)" --location $COMPOSER_LOCATION | cut -d '/' -f 4`; gcloud container clusters resize $COMPOSER_CLUSTER --zone $COMPOSER_ZONE --size=0 --quiet;
          restartPolicy: OnFailure
          volumes:
          - name: google-app-credentials-volume
            secret:
              secretName: google-app-credentials
              items:
              - key: credentials.json
                path: credentials.json

其中google-app-credentials是包含我们服务帐户密钥文件的kubernetes机密。