Чтобы сократить расходы, связанные с запуском google-cloud-composer, мне интересно, есть ли возможность отключить экземпляры виртуальных машин, которые запускают виртуальную среду в определенные часы. Например: большинство наших DAG работают либо утром, либо днем, поэтому мы хотели бы выключить виртуальные машины на ночь или даже в полдень, если это возможно. Я знаю, что мы можем отключить среды вручную из облачной консоли Google, но было бы здорово найти способ сделать это автоматически.
Спасибо!
К сожалению, невозможно настроить это программно с помощью Google Cloud Platform. Лучшим вариантом для этого будет запуск сценария как cronjob с другого хоста, который будет включать или выключать среду Composer, когда она не используется.
@Patrick W: я хочу это сделать, но не могу найти подходящий API / документацию для включения / выключения всей среды Composer. Не могли бы вы дать указатель в правильном направлении
@dkapitan это - это документация для Cloud Composer API.
Мы настроили крошечный кластер k8s параллельно и используем развертывание CronJob для управления масштабированием узлов пула до 0, а затем второе задание cron для его восстановления.
Развертывание происходит примерно так (изменение количества узлов вверх и вниз). Вы можете изменить действие на то, как вы обрабатываете виртуальные машины (приостанавливаете ли вы экземпляры с помощью вычислений в консоли?)
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 [email protected] --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, содержащий ключевой файл нашей сервисной учетной записи.
Добро пожаловать в Stack Overflow! Чтобы дать вам отличный ответ, нам может помочь, если вы взглянули на Как спросить, если вы еще этого не сделали. Было бы также полезно, если бы вы могли предоставить минимальный воспроизводимый пример.