如何解决可变数量的输入工件进入一个步骤
我有一个菱形样式的工作流程,其中一步A
使用B
启动了可变数量的分析作业X
至withParam:
。作业数量基于动态信息,并且直到第一步运行之前才知道。这一切都很好,除了我还希望单个聚合器作业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问题上的回答。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。