Можно ли в определенные часы отключить виртуальную машину, на которой размещается google-cloud-composer?

Чтобы сократить расходы, связанные с запуском google-cloud-composer, мне интересно, есть ли возможность отключить экземпляры виртуальных машин, которые запускают виртуальную среду в определенные часы. Например: большинство наших DAG работают либо утром, либо днем, поэтому мы хотели бы выключить виртуальные машины на ночь или даже в полдень, если это возможно. Я знаю, что мы можем отключить среды вручную из облачной консоли Google, но было бы здорово найти способ сделать это автоматически.

Спасибо!

Добро пожаловать в Stack Overflow! Чтобы дать вам отличный ответ, нам может помочь, если вы взглянули на Как спросить, если вы еще этого не сделали. Было бы также полезно, если бы вы могли предоставить минимальный воспроизводимый пример.

Mat 22.10.2018 15:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
1 550
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

К сожалению, невозможно настроить это программно с помощью Google Cloud Platform. Лучшим вариантом для этого будет запуск сценария как cronjob с другого хоста, который будет включать или выключать среду Composer, когда она не используется.

@Patrick W: я хочу это сделать, но не могу найти подходящий API / документацию для включения / выключения всей среды Composer. Не могли бы вы дать указатель в правильном направлении

dkapitan 15.11.2018 13:20

@dkapitan это - это документация для Cloud Composer API.

Patrick W 15.11.2018 16:37

Мы настроили крошечный кластер 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, содержащий ключевой файл нашей сервисной учетной записи.

Другие вопросы по теме