%20%D0%BD%D0%B0%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5%20%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F%2F%D1%82%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D0%B0%20%D0%B2%20%D0%BE%D0%B1%D0%BB%D0%B0%D0%BA%D0%B5%20Google%3F.png)
Мы используем экземпляр GPU в облаке Google для запуска сервиса, связанного с машинным обучением. У облака Google есть эти незапланированные планы обслуживания для экземпляров GPU. Перед тем, как экземпляр будет отключен для обслуживания, API облака Google отправит уведомление этому экземпляру за 1 час до отключения экземпляра.
Предположим, что экземпляр GPU называется "vm1". Мы хотим запустить резервный экземпляр GPU, "vm1-duplicate", как только "vm1" получит уведомление о том, что он будет проходить техническое обслуживание позже, чтобы обслуживание наших клиентов было затронуто этим обслуживанием. И как только обслуживание "vm1" будет завершено, остановите "vm1-duplicate", чтобы не было дополнительных расходов.
Есть ли в облаке Google элегантный способ запрограммировать такой автоматический запуск/остановку виртуальной машины на основе некоторых условий/триггеров/событий?
решение1
Супербыстрое решение: установите gcloud в виртуальной машине (он уже должен быть там), создайте учетную запись службы [1], создайте небольшой скрипт оболочки и запускайте его в cron каждые 15/30 минут.
Скрипт будет отслеживать событие http endpoint [2] и возродит новую виртуальную машину из вашей виртуальной машины через командную строку gcloud. Остановите автоперезапуск и просто поддерживайте новую виртуальную машину в рабочем состоянии.
Если это работает, рассмотрите возможность создания собственного образа с уже установленным скриптом и настроенным cron. Так что респаун будет проще.
[1] не обязательно, просто чтобы избежать ввода учетных данных в виртуальную машину
[2]https://cloud.google.com/compute/docs/gpus/gpu-host-maintenance