Мы настроили крошечный кластер k8s параллельно и используем развертывание CronJob для управления масштабированием узлов пула до 0, а затем второй cronjob для его восстановления.
Развертывание выглядит примерно так (изменение количества узлов вверх и вниз).Вы можете изменить действие так, как если бы вы обрабатывали виртуальные машины (приостанавливаете ли вы экземпляры с помощью 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, содержащий нашу учетную запись службыфайл_ключа.