GCP 谷歌云抢占式实例自动开机脚本

要充分利用谷歌云提供的赠金,可以选择开通抢占式实例(Spot)的方式,并将网络设置为标准层级网络(请注意,这种选择不支持 IPv6)。如此一来,每个月可以享受 200GB 的免费流量,并且在每个区域都有免费的流量。然而,抢占式实例可能会面临自动关机的情况,关机后需要手动在平台上重新启动,通常大约每几天就会自动关机一次。

为了解决这个问题,我编写了一个脚本,利用 Google Cloud SDK 定期遍历所有区域中的实例,检测每个实例的状态,并自动启动处于非运行状态的实例。该脚本支持 Docker 运行,并可管理多个账户。

脚本代码

项目地址:GitHub Repository

如何使用

创建密钥

首先,请确保您已配置正确的 GCP 项目。在控制台右侧的菜单栏中选择「API 和 服务」,然后点击「凭据」。在「服务账号」部分,选择默认的服务账号,进入后点击「密钥」选项。接着,点击「添加密钥」以创建一个新密钥,选择类型为 JSON。生成后,请保存好该 JSON 文件,以备后续使用。

创建实例

开通抢占式实例并设置标准永久性磁盘和标准层级网络流程

  1. 在创建实例时,请在「OS和存储空间」选项中修改磁盘类型,磁盘空间最小可以设置为10GB。

  2. 接下来,在网络选项中展开默认的「default」接口,修改网络服务层级为“标准”。

  3. 最后,在高级选项中,将实例类型更改为 “Spot”。

运行脚本

推荐使用容器的方式进行运行,不过您也可以选择直接运行脚本。

# 创建一个目录,然后把上面申请的密钥文件放在里面,支持多个密钥文件
mkdir /root/key

# 运行容器
docker run -d --name gcp-autostart \
    -e GCP_KEY_PATH=/app/key \
    -e GCP_LOOP_INTERVAL=300 \ 
    -v /root/key:/app/key \
    fogforest/gcp-autostart

# 查看日志
docker logs -f gcp-autostart

GCP_KEY_PATH:密钥存放目录

GCP_LOOP_INTERVAL:检测间隔(秒)

评论区
头像