gpt4 book ai didi

Kubernetes 动态作业扩展

转载 作者:行者123 更新时间:2023-12-04 04:33:03 25 4
gpt4 key购买 nike

我终于在 kubernetes 池中试了一下,想就解决我遇到的问题的最佳方法获得一些建议:

我们使用的技术:

  • GCP
  • GKE
  • GCP 发布/订阅

  • 我们需要在整个机群中进行批量处理,并决定采用以下方法:
  • 新的原始数据流入
  • 一个节点对此进行分析并将数据分解为可管理的部分,这些部分被推送到队列
  • 我们有一个启用 Autoscaling 且最小大小为“0”的集群
  • Kubernetes 作业为该集群上的每条新消息启动一个 pod
  • 当 pod 无法再提取消息时,它们会成功终止

  • 问题是:
  • 触发此类工作的标准方法是什么?
  • 您是否每次都创建一个新工作,或者工作是否意味着长期存在并重新运行?
  • 我只看到了使用 yaml 文件的示例,但是我们可能希望执行部分工作的节点来创建作业,因为它知道应该运行多少个并行 pod。是否建议使用 python sdk 以编程方式创建作业规范?或者,如果工作生命周期很长,您是否只需点击 k8 api 并修改所需的并行 pod,然后重新运行工作?
  • 最佳答案

    Kubernetes 中的作业是短命的,不是为了重用而设计的。作业专为运行一次、运行到完成的工作负载而设计。通常他们被分配一个特定的任务,即处理单个队列项目。

    但是,如果您想使用单个实例处理工作队列中的多个项目,那么通常建议改为使用部署来扩展继续处理队列中项目的工作人员池,从而扩展依赖于的池工作人员的数量队列中的项目数。如果没有剩余的工作项,那么您可以将部署扩展到 0 个副本,当有工作要做时再向上扩展。

    要在 Kubernetes 中创建和控制工作负载,最佳实践是使用 Kubernetes SDK。虽然您可以生成 YAML 文件并转至另一个工具,例如 kubectl使用 SDK 可以简化配置和错误处理,并且还可以简化集群中资源的自省(introspection)。

    关于Kubernetes 动态作业扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51529041/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com