Kubernetes 如何从组件中获取运行id?
我正在对Kubeflow管道进行一些实验,我感兴趣的是检索要保存的运行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
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用于单个组件任务执行。不过,最好只使用随机数生成组件。