如何 运行 计划的容器化作业并最小化 GCP 成本

How to run a scheduled containerized job and minimize GCP costs

我想使用 GCP 运行 每 20 分钟一个容器化 python 作业。作业本身需要大约 10 分钟才能完成。

目前我运行在具有 1 个工作节点的区域 GKE 集群中将其作为 CronJob。

还有其他最佳实践吗?我想知道同时最大程度降低成本的最佳做法。

我的要求是:

我看到还有其他技术,例如 Cloud Scheduler、Cloud Pub/Sub、Cloud Functions,但不知道它们是否可以满足我的要求。

此外,我还看到 GKE 上存在抢占式 VM,成本增加了 80%。我的工作可以停止并重新开始。它只是 运行 一个事务,它从数据库中读取一些数据,进行一些预处理,最后将结果写回到数据库中。

唯一关心的是:当一个节点被Google抢占时,需要多长时间才能回来?几分钟?一小时?另外,当GKE集群没有节点时会自动创建一个吗?

谢谢

运行 你的集群在 GKE Autopilot mode。使用 GKE Autopilot,您只需为您的应用消耗资源的时间付费。这是 CRON 作业的完美用例。

  • 您无需对代码或部署策略进行任何更改。只需创建一个新的 GKE 集群,select 集群类型为 autopilot。

在理想情况下,被抢占的实例恢复得非常快(1 分钟或更短),我的意思是,区域中有足够的资源来创建您的实例,但如果区域被过度使用,可能需要数小时或数天. Google 以可抢占为代价优先考虑常规实例。

综上所述,您没有任何保证,但您只需支付正常价格的 20%!总是一个权衡的问题。


如果你有集装箱,可以换档看看AI Platform custom container training。请原谅名称的含义,请记住,您可以按需向 运行 您的容器提供资源,并在工作负载结束时将其销毁。你的开销很小(启动容器大约需要 2 分钟,最后破坏环境需要 1 分钟)但我相信这可以满足你的用例