0

我有一个菱形风格的工作流程,其中一个步骤A启动了可变数量的分析作业BX使用withParam:. 作业的数量基于动态信息并且在第一步运行之前是未知的。这一切都很好,除了我还想要一个聚合器作业Y来运行所有这些分析作业的输出:

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

每个分析作业B-X编写工件,并Y需要所有这些作为输入。我不知道如何为Y. 这可能吗?我尝试传入 artifactkey的 JSON 数组,但 pod 卡在 pod 初始化上。我找不到任何关于如何做到这一点的例子。

A创建了几个由B-消耗的工件X(每个作业一个作为 的一部分withParam:)所以我知道我的工件存储库设置正确。

每个作业B-X需要大量 CPU,因此将在不同的节点上运行,所以我认为共享卷不会起作用(尽管我对跨不同节点共享卷知之甚少)。

4

1 回答 1

1

我将问题发布为 GitHub 问题:

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

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

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

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

于 2020-09-26T06:52:36.443 回答