【问题标题】:Scheduled, auto-scaled jobs in Google Cloud PlatformGoogle Cloud Platform 中的计划自动扩缩作业
【发布时间】:2019-07-24 00:36:44
【问题描述】:

我对云开发有点陌生,所以请放轻松。我什至不确定我要问的是可能

我试图弄清楚如何安排一个作业(可能每两个小时)来执行一个工作进程,该进程将被打包在一个自定义 Docker 映像中。工作进程将通过连接到应用程序的数据存储来检查它需要执行的任何“计划工作”(根据应用程序用户的请求),然后执行任何未完成的工作。完成后,我希望在下一个计划间隔之前将所有内容都拆除,因此在停机期间我不会产生任何费用。

一个复杂的问题是计划的工作将是不同的类型。理想情况下,我希望每个类型启动我的图像的一个实例,将该类型传递给工作进程,这样它就知道它正在处理什么类型的预定工作。一旦它完成了它的预定工作类型,它就可以退出,即使其他容器仍在运行它们的预定工作。

要求摘要

  • 完全控制 Docker 映像。我有自定义工具和代码需要放入图片中。
  • 基于时间的计划来促使执行 Docker 映像中的代码。
  • 计划的工作执行可能需要相当长的时间(可能长达 10 或 15 分钟)才能完成。
  • 自定义、程序控制的缩放和分区创建 x 个 Docker 容器,每个容器都有自己的计划工作类型。 x 的确定将基于应用程序数据存储中的数据。
  • 在停机期间,绝对不会产生任何费用。

我尝试过/考虑过的事情

K8s

似乎要求集群始终运行。我也不清楚如何让集群中的不同节点负责不同类型的计划工作。

AppEngine 和 Cloud Scheduler

由于我的定制 Docker 映像,我需要使用灵活环境。根据this,这意味着我必须让至少一个实例始终运行。

同样,我不确定如何扩展它,以便不同的实例处理不同类型的预定工作。

问题

所以,我对这一切有几个问题:

  1. 首先,GCP 是否也能做到这一点?到目前为止,我的研究表明并非如此。
  2. 尽可能接近我的要求的最佳方法是什么?

【问题讨论】:

    标签: docker google-cloud-platform cloud


    【解决方案1】:

    原则上,工作负载非常适合 Kubernetes。你可以设置一个 Kubernetes CronJob 每小时运行一次每种类型的worker;您将为每种工作负载创建一个具有单独环境变量或命令行参数的单独 CronJob;如果你有一个 Docker 镜像注册表(比如GCR),你就可以运行任何定制的 Docker 镜像。

    这里的一个技巧是,您正在谈论向上和向下扩展 容器,但在 GKE 上,您需要为 节点 付费。在 GKE 中,cluster autoscaler 将自动为您创建和删除节点。 The FAQ 听起来快速扩展比缩减更重要,a target 获得足够的容量在 60 秒内启动一切。 It will scale down nodes that are less than 50% in use for 10 minutes.

    如果您的计划作业占您总工作量的很大一部分,那么这可能会导致节点以平均 50% 的利用率启动和停止运行,并且每小时都有新的加速运行。事实证明,这也可以满足您的计费要求(或者至少比让整个集群一直运行要好)。 GKE pricing documentation 说:

    GKE 将 Google Compute Engine 实例用于集群中的节点。您需要根据 Compute Engine 的定价为每个实例付费,直到删除节点。 Compute Engine 资源按每秒计费,最低使用费用为 1 分钟。

    如果成本是主要驱动因素,那么最佳情况是您永远不会有空闲节点。解决这个问题的最直接的方法是为每个任务启动一个专用的 GCE 实例,然后在任务完成时销毁它。 GCE 支持indirectly running containers on instances,这可能非常适合您的任务;您必须提供自己的作业调度程序并使其能够购买和终止 GCE 实例。这将成为您希望在开发自定义解决方案上花费多少钱与您希望在云资源上花费多少钱之间的权衡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 2017-05-23
      • 2015-02-21
      • 2019-02-23
      • 2021-12-24
      • 2020-08-14
      相关资源
      最近更新 更多