Esp*_*and 6 kubernetes argo-workflows argo-events
我想弄清楚如何使用Argo设置工作队列。Argo 工作流程的计算成本很高。我们需要为许多同时发生的请求做好计划。工作流项目通过 HTTP 请求添加到工作队列。
该流程可以这样演示:
client  
  => hasura # user authentication  
    => redis # work queue
      => argo events # queue listener
        => argo workflows 
          => redis + hasura # inform that workflow has finished
            => client 
Run Code Online (Sandbox Code Playgroud)
我从未构建过超出其资源的 K8s 集群。在哪里限制工作流程的执行?或者 Argo Events 和 Workflows 是否根据集群中的资源来限制这些?
上面的例子可能可以简化为以下内容,但问题是如果处理队列已满会发生什么?
client
  => argo events # HTTP request listener
    => argo workflows
Run Code Online (Sandbox Code Playgroud)
    Argo Workflows 没有队列的概念,因此它无法知道队列何时已满。如果您需要队列控制,则应在提交工作流程之前进行。
提交工作流后,有多种方法可以限制资源使用。
还有许多其他性能优化,例如设置工作流和 Pod TTL,以及将大型工作流的 YAML 卸载到数据库,而不是将它们保留在集群上。
据我所知,没有办法设置工作流限制,以便 Argo 拒绝额外的工作流提交,直到有更多资源可用。如果您担心 Kubernetes etcd 填满太多工作流定义,这就是一个问题。
为了避免破坏 etcd,您需要在 Argo 前面放置另一个某种应用程序来对工作流程提交进行排队,直到有更多资源可用。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3469 次  |  
        
|   最近记录:  |