【摘要】 KubeFlow的Pipeline流程引擎,Argo Workflow流程引擎,2者实现原理分析,及2者间的关系。为你云原生流程引擎商用选型提供参考。
Argo Workflow流程引擎,可以编排容器流程来执行业务逻辑,在20年4月8日进入CNCF孵化器组。
而KubeFlow的Pipeline子项目,由Google开源,其全面依赖Argo作为底层实现,并增强持久层来补充流程管理能力,同时通过Python-SDK来简化流程的编写。
1 Argo流程引擎
Argo的步骤间可以传递信息,即下一步(容器)可以获取上一步(容器)的结果。结果传递有2种:
1. 文件:上一步容器新生成的文件,会直接出现在下一步容器里面。
2. 信息:上一步的执行结果信息(如某文件内容),下一步也可以拿到。
下面我们就来解读一下,Argo怎么实现“信息”在容器间的传递的,以及它和其他的流程引擎实现传递的区别。
1.2 文件怎么从上一个容器跑到下一个容器里的?
Argo流程,可以指定2个步骤之间,传递结果文件(Artifact)。即假设流程为:A->B,那么A容器跑完,B容器可以取得上一个容器的输出文件。
如下:A容器生成一个 /tmp/hello_world.txt 文件,Argo将这个文件,放到了B容器里面,并重命名为 /tmp/message文件。

注意:流程上的每个步骤,都对应执行一个容器。 在A跑完后容器就退出了,然后才跑的B(这时候已经没有A容器在运行了)。
所以Argo怎么把一个文件从A容器“拷贝”到B容器里面的?
1.2.1 容器间通过共享存储?(NO)
一般容器间共享文件,首先想到的都是:咱使用共享存储呀,大家都挂载同一个PVC不就行了。

确实共享存储可以实现容器共享文件,但是这里Argo可以:
(1)任意指定文件传递。(2)传递后文件可以改名字。
<