可变数量的输入工件进入一个步骤

问题描述

我有一个菱形样式的工作流程,其中一步A使用B启动了可变数量的分析作业XwithParam:。作业数量基于动态信息,并且直到第一步运行之前才知道。这一切都很好,除了我还希望单个聚合器作业Y覆盖所有这些分析作业的输出:

     B  
    / \
   / C \
  / / \ \
 A-->D-->Y
  \  .  /
   \ . /
    \./
     X

每个分析作业B-X都会写入工件,而Y需要将所有工件作为输入。我不知道如何为Y指定输入。这可能吗?我尝试传递工件key的JSON数组,但是pod停留在pod初始化上。我找不到有关如何执行此操作的示例。

A创建了多个B-X消耗的工件(每个作业一个withParam:的一部分),因此我知道我的工件存储库已正确设置

B-X的每个作业都需要大量CPU,因此将在不同的节点上运行,因此我认为共享卷无法正常工作(尽管我不太了解)关于在不同节点之间共享卷)。

解决方法

我将问题发布为GitHub问题:

https://github.com/argoproj/argo/issues/4120

解决方案是将所有输出写入特定于作业的工件路径(即同一子目录)。然后,您将该路径指定为输入key,而argo会将所有先前的结果解压缩到一个子目录中。您可以使用{{workflow.name}}创建唯一路径。

这确实意味着您被限制在工件存储库中的特定目录结构上,但是对我来说这是一个很小的代价。

有关完整的工作解决方案,请参见sarabala1979在GitHub问题上的回答。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...