kubeflow SDK—kfp进行client实例化操作时报错kfp_server_api.exceptions.ApiException: (400)和ConnectionRefusedError

本文介绍了作者重新接触Kubeflow并尝试使用SDK进行后端操作的经历。通过kfp模块与API交互时遇到了认证和API错误,最终解决了问题。文章详细阐述了错误原因和解决方案,包括指定正确的主机、端口、namespace和认证信息,并提供了成功连接后的实验信息输出示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近又开始鼓捣kubeflow了,这个看过我文章的话应该有印象,基本上就是去年同期的时候搞过一段时间,后来因为太忙搁置了下来,最近因为项目的需要,可能需要用到这个kubeflow平台,所以又重新捡起来了。

作为一个新手,我的直观理解就是,kubeflow本质就是一个流程编排的工具,底层是基于Argoflow实现的工作流的定义,而定义的工具或者是说途径就是自己提交的pipeline.yaml文件,所有的执行细节和步骤全部都定在这个yaml文件中了。

之前我的方式就是首先开发各个节点的业务代码,之后开发pipeline文件,然后借助于kfp模块提供的dsl-compile编译命令来实现pipeline.yaml文件的编译生成。之后手工在kubeflow平台中提交生成的yaml文件即可,如下:

 点击红框中的【Upload Pipeline】之后跳转如下:

 按照我这里给出来的1-3步骤操作即可完成pipeline.yaml的上传提交。

之后在runs下可以创建run,如下:

 后面就是页面端的操作了,我就不再赘述了。

今天主要讲的不是这些操作,这是手工页面的操作方式,那么有没有可以不用页面直接后端操作呢?当然是可以的了,kubeflow自己提供了可以调用其API的SDK,名字为:kfp,安装kfp后可以实例化client,之后就可以操作了。

这里官方的样例代码如下:

import kfp


client = kfp.Client(host='https://localhost:3000/')
client = kfp.Client()
print(client.list_experiments())

终端执行后报错如下:

 提示认证有问题,然后报的连接错误,这个其实也好理解,自己搭建的kubeflow平台,在域名、ip等部分都做了映射和修改所以直接使用默认的localhost和3000端口,大概率是不可能连接到的,所以这里就报错了。

我修改成自己的IP和PORT之后重新执行报错如下:

 下面的两个报错提示可能是很多很多折腾这个kubeflow的人都会遇上的错误,如下:
错误一:

kfp_server_api.exceptions.ApiException: (400)

错误二:

"Invalid input error: Invalid resource references for experiment. Namespace is empty."

说白了,这里是你能成功连接到自己的集群服务了,但是api服务异常了。

仔细分析其实第二个错误是比较好理解,就是说你的client实例化里面要指定一下自己的namespace,不然的话不知道进入到哪个namespace下,如果你有多个的话。

错误一的话查了很多的资料最后确定是api请求的有问题,应该在端口后面加上pipeline才行。样例如下:

client = kfp.Client(
    host=f"{HOST:PORT}/pipeline",
    cookies=session_cookie,
    namespace=NAMESPACE,
)

需要加入自己的认证cookie和当前的namespace才行。

重新执行终于成功了。执行如下代码,打印实验信息:

print(client.list_experiments(namespace='kubeflow-user-example-com'))

要记得这里也是需要加上自己的namespace的。

输出的experimen信息如下:

 问题成功解决,记录一下!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值