Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何从组件中获取运行id?_Kubernetes_Kubeflow_Kubeflow Pipelines - Fatal编程技术网

Kubernetes 如何从组件中获取运行id?

Kubernetes 如何从组件中获取运行id?,kubernetes,kubeflow,kubeflow-pipelines,Kubernetes,Kubeflow,Kubeflow Pipelines,我正在对Kubeflow管道进行一些实验,我感兴趣的是检索要保存的运行id以及一些关于管道执行的元数据。是否有任何方法可以从组件(如ContainerOp)执行此操作?我尝试使用来执行此操作,但现在似乎不可能 我发现的唯一选择是使用他们在中使用的方法。您基本上声明了一个包含{{workflow.uid}的字符串。它将在执行期间替换为实际值 您也可以这样做以获取pod名称,它将是{{pod.name}您可以使用kfp.dsl.EXECUTION\u ID\u占位符和kfp.dsl.RUN\u ID

我正在对Kubeflow管道进行一些实验,我感兴趣的是检索要保存的运行id以及一些关于管道执行的元数据。是否有任何方法可以从组件(如
ContainerOp
)执行此操作?

我尝试使用来执行此操作,但现在似乎不可能

我发现的唯一选择是使用他们在中使用的方法。您基本上声明了一个包含
{{workflow.uid}
的字符串。它将在执行期间替换为实际值


您也可以这样做以获取pod名称,它将是
{{pod.name}

您可以使用
kfp.dsl.EXECUTION\u ID\u占位符
kfp.dsl.RUN\u ID\u占位符
作为组件的参数。运行时,它们将被实际值替换。

组件的容器应该有一个名为
HOSTNAME
的环境变量,该变量被设置为其唯一的pod名称,从中派生所有必要的元数据。

从管道创建运行函数
返回
运行管道结果
,并且具有
run\u id属性

client=kfp.client(主机)
结果=client.create\u run\u from\u pipeline\u func(…)
result.run\u id

由于kubeflow管道依赖于argo,所以可以使用argo变量来获取所需内容

比如说,

@func\u to\u container\u op
def虚拟(运行标识,运行名称)->str:
返回运行id、运行名称
@dsl.pipeline(
name='test_pipeline',
)
def测试_管道():
虚拟({workflow.labels.pipeline/runid}},{{{workflow.annotations.pipelines.kubeflow.org/run_name}}})
您会发现占位符将被替换为正确的运行id和运行名称

有关更多argo变量:

要知道kubeflow管道运行中标签和注释中记录了什么,只需从k8s获取相应的工作流

kubectl get workflow/XXX -oyaml

支持的占位符似乎是Argo文档中列出的占位符:更正确的答案{{pod.name}}与运行无关,而是与组件有关。谢谢。这两个有什么不同?RUN_ID用于整个管道运行,而EXECUTION_ID用于单个组件任务执行。不过,最好只使用随机数生成组件。