在前面的教程中,我们已经搭建好了本地的kubeflow集群,接下来因为个人需要,本人需要再在此基础上搭建好kubeflow pipelines.

首先需要了解pipelines是什么,能做什么,具体可以参考官网描述:

https://www.kubeflow.org/docs/pipelines/pipelines-overview/

从V0.1.3开始,Kubeflow Pipelines成为Kubeflow核心组件之一。 它在Kubeflow部署期间自动部署。 您可以在GKE上使用Kubeflow部署进行尝试。 请参阅GKE设置指南。注意:由于kubeflow / pipelines#345和kubeflow / pipelines#337,Kubeflow Pipelines依赖于GCP服务,非GKE集群不支持某些功能。

上面这一段是官网的描述,点击V0.1.3的链接,进入这个页面: https://github.com/kubeflow/pipelines/releases/tag/0.1.3

image13

这里显示安装kubeflow pipelines只需要俩步。

(1)按照pipeline

(2)按照SDK

但是你直接运行时会报错的。除非你的服务器可以自由的上网。

第一步的解决办法:

先使用某些办法,下载

https://storage.googleapis.com/ml-pipeline/release/0.1.3/bootstrapper.yaml

该yaml文件。然后将yaml文件中使用的国外镜像替换成你自己的镜像。如果大家不能访问,可以使用我已经修改好的yaml文件。该文件使用的镜像时我tag好的dockerhub镜像。文件地址如下:

https://github.com/zoux86/kubeflow/blob/master/bootstrapper.yaml

下载好bootstrapper.yaml文件后,在同级目录下,使用kubectl命令

1
kubectl create -f bootstrapper.yaml

执行完这个命令之后,耐心等一段时间。因为这里要启动pipelines的组件,下篇文章会介绍kubeflow和pipelines的组件信息。一段时间后,使用kubectl get pod -n kubeflow可以查看到,多了下面的这些pod,这就是pipelines的服务。

image14.ng

注意这是我成功后的截图。如果你是国内环境,你这些pod启动还是会有问题。主要是俩个问题,第一个是镜像拉取失败,第二个是挂载卷失败。原因是启动bootstrapper.yaml, 该文件会启动其他的好几个服务,比如前端,后端等。而这些默认的镜像都是我们正常情况下拉取不到的。

镜像拉取失败的解决方法如下:
1
kubectl edit pod PODNAME -n kubeflow  (PODNAME替换成你自己的)

使用上面的命令修改PODNAME对应的yaml文件。修改yaml文件中使用的镜像,然后保存退出。等一会该POD就会自动拉取你修改后的镜像。

这里需要你提前将镜像拉取下来,然后tag成你自己的镜像。

PS:我在dockerhub上上传了一部分自己拉取的grc.io镜像,大家可以在上面搜索 “zoux”,看是否有大家想要的镜像。

解决挂载卷失败的问题

这里需要我们提前建立自己的PV(持久卷),只用建立PV就行了。建立完之后会自动匹配。 具体步骤可以参考我前面文章,为kubeflow配置NFS做后端存储系统。

解决这里俩步之后,使用kubeflow get pod -n kubeflow查看pod, 你就会发现所有的Pod都启动起来了。 image15

第二步的解决方法

到这里其实我们只是完成了第一步,安装好了ML Pipeline services。接下来我们需要安装python SDK了。官网中说使用的是这个命令:

1
pip3 install https://storage.googleapis.com/ml-pipeline/release/0.1.3/kfp.tar.gz --upgrade

但是这里我们首先观察一下这个命令,有俩点需要注意:

第一是pip3,这里需要我们在服务器中安装好python3.5以上的环境。

第二是访问的网址是googleapis,如果大家不能访问可以使用我下载好的。

地址:https://github.com/zoux86/kubeflow/blob/master/kfp.tar.gz

PS:安装SDK可能遇到的问题

问题1:

image16

解决办法:直接手动使用pip命令安装这些包。

问题2:如果安装pyyaml时,报错说不能安装或者不能删除已有的pyyaml

Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

解决方法: 降低pip3版本,然后安装

sudo -H pip3 install pip==8.1.1
sudo -H pip3 install --upgrade PyYAML
最后验证python sdk是否成功。

如果在python命令行中能 “import kfp”的话,恭喜你成功了。