首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Argo工作流创建队列系统

使用Argo工作流创建队列系统
EN

Stack Overflow用户
提问于 2020-09-18 13:07:42
回答 1查看 2.1K关注 0票数 6

我正在研究如何使用Argo来设置一个工作队列。Argo工作流在计算上非常昂贵。我们需要为许多同时提出的请求做好计划。工作流项通过HTTP请求添加到工作队列中。

该流程可以如下所示:

代码语言:javascript
复制
client  
  => hasura # user authentication  
    => redis # work queue
      => argo events # queue listener
        => argo workflows 
          => redis + hasura # inform that workflow has finished
            => client 

我从未构建过超过其资源的K8s集群。在哪里限制工作流的执行?或者Argo事件和工作流是否根据集群中的资源来限制这些事件和工作流?

上面的示例可能简化为以下内容,但问题是如果处理队列已满发生了什么

代码语言:javascript
复制
client
  => argo events # HTTP request listener
    => argo workflows
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 15:39:16

Argo工作流没有队列的概念,因此它无法知道队列何时已满。如果需要队列控制,则应该在提交工作流之前进行。

一旦提交了工作流,就有许多方法来限制资源的使用。

  1. 豆荚资源 -每个工作流步骤都由一个Kubernetes Pod表示。您可以设置资源请求和限制,就像部署中的Pod一样。
  2. 阶跃平行度极限 -在工作流中,您可以限制并发运行的步骤的数量。当一个步骤特别资源密集时,这会有所帮助。
  3. 工作流并行性限制 --您可以通过向我们配置一个信号量来限制并发运行的工作流的数量。

还有许多其他的性能优化,比如设置工作流、Pod和将大型工作流的YAML卸载到DB,而不是将它们保留在集群中

据我所知,没有办法设置一个工作流限制,以便Argo将拒绝其他工作流提交,直到有更多的资源可用。如果您担心Kubernetes会填充太多的工作流定义,那么这就是一个问题。

为了防止etcd爆炸,您将需要另一个类似于Argo的应用程序来排队提交工作流,直到有更多的资源可用为止。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63956383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档