【问题标题】:Kubernetes (GKE/AWS/Azure) Scaling for Large Jobs针对大型作业的 Kubernetes (GKE/AWS/Azure) 扩展
【发布时间】:2020-05-02 21:02:21
【问题描述】:

我正在寻找一些建议,如果有人能指出我正确的方向,我将永远感激不尽。

我有一个 docker 容器,用于跨视频帧集进行基于机器学习的对象检测/跟踪。目前,我用这个 docker 容器启动了一个 ec2 实例,然后以串行方式发送大约 30 帧的批次。当然,这太慢了。

我想建立一个 kubernetes 系统,它可以从零个运行容器到 50+,然后立即降到所需的最低限度。由于模型大小,每个容器需要大约 8 Gb 的 RAM,但可以在 CPU 上运行。我需要这些运行大约一分钟以并行处理传入的图像,然后终止,在视频处理完成后缩小到零活动容器。总之,将 30 帧的小批量发送到集群,使其大规模扩展,然后在完成后立即缩减。

我能够在 Google 云上设置一个 Kubernetes 集群,但我不知道如何在作业终止后将其快速扩展到零。在工作完成后运行这么多容器会非常昂贵。

有人能指出我正确的方向吗?我可以用 gke 做到这一点吗?我应该尝试其他服务吗?

非常感谢您的帮助。

没有

【问题讨论】:

    标签: amazon-web-services azure kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    如果我清楚地理解了您的任务,那么您正在寻找的是 使用 Kubernetes 进行并行处理。使用 K8S 的这个特性,您可以运行多个 pod 并行运行的某个作业,并且这些 pod 在作业完成时终止。

    您可以从以下文档链接中了解更多信息 -

    https://kubernetes.io/docs/tasks/job/parallel-processing-expansion/

    https://kubernetes.io/docs/tasks/job/fine-parallel-processing-work-queue/

    【讨论】:

    • 谢谢沙赫德!这看起来很有希望。看起来我可以用 GKE(?)做到这一点你知道通过 HTTP 请求是否可以实现类似的快速扩展?我想知道使用 Jobs 与 REST 的总体计算成本是否会有所不同。
    • 是的!您可以通过 HTTP 执行此操作。但是你必须根据给定的作业实现一个任务队列,并将队列映射到你的集群。顺便说一句,那将是一项乏味的任务。您的集群将通过水平 pod 扩展有效地处理作业,因此您不必担心增加的计算成本!
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2021-01-11
    • 2018-02-23
    • 2018-10-02
    • 1970-01-01
    • 2018-12-04
    相关资源
    最近更新 更多