美文网首页kubeflow
kubeflow--国内环境 安装

kubeflow--国内环境 安装

作者: zoux | 来源:发表于2019-01-06 19:06 被阅读1139次

    最近一直在想在自己集群上搭建Kubeflow环境,兜兜转转最终终于装好了。这个过程中遇到了很多坑,而在整个过程中发现网上关于如何在国内环境下安装kubeflow的教程非常少。故在此记录我的搭建过程,希望能对想搭建kubeflow环境的小伙伴们一些帮助。这里特意感谢实验室董师兄的指定,告诉我如何修改指定的镜像。

    1. 环境介绍:

    ubuntu 16.04的机器4台:
    1台master
    3台node
    k8s版本:v1.8.7
    ksonnet:0.1.3
    kubeflow版本:v0.3.2

    安装kubeflow必须要提前安装ksonnet,关于如何安装k8s,ksonnet可以参考本专栏的安装教程。

    2. 开始安装kubeflow

    2.1 安装思想

    由于Kubeflow安装过程中使用的都是gcr.io的镜像,这是google服务器的镜像,国内由于被墙的原因访问不了。所以这里采取的思想是修改kubeflow的后端配置,让安装过程中不使用gcr的镜像,而是使用我们自己指定的镜像。接下来是具体安装过程。

    2.2 安装准备

    2.2.1 提前建立自己的本地仓库 ,这里我的本地仓库是192.168.14.99:5000

    关于如何搭建可参考本专栏的上一篇文章

    2.2.2 将需要的镜像pull下来, 然后tag成本地仓库的镜像,然后上传到本地仓库。

    这里有人可能有疑问:

    Q:怎样知道该版本的kubeflow需要哪些镜像呢?
    A:我是先在一个k8s集群上使用官网的教程,安装kubeflow。很明显这样不会成功,但在kubectl get pod -n kubeflow时,发现很多pod都是没启动成功。使用describe命令一个一个查看后,就能找到所需要的镜像。记录下来,然后在dockerhub上搜,是否有人上传了这些镜像。

    如果有人使用的是kubeflow v0.3.2版本的话,可以直接使用该脚本下载我上传的镜像。

    #!/bin/bash
    images=(katib-frontend:v0.1.2-alpha-45-g3dce496 \
    spartakus-amd64:v1.0.0  \
    jupyterhub-k8s:v20180531-3bb991b1  \
    tf_operator:v0.3.0  \
    vizier-core:v0.1.2-alpha-45-g3dce496 \
    suggestion-bayesianoptimization:v0.1.2-alpha-45-g3dce496 \
    suggestion-grid:v0.1.2-alpha-45-g3dce496 \
    suggestion-hyperband:v0.1.2-alpha-45-g3dce496 \
    suggestion-random:v0.1.2-alpha-45-g3dce496   \
    modeldb-backend:v0.2.0        \
    centraldashboard:v0.3.0
    )
    for imageName in ${images[@]} ; do
      docker pull zoux/$imageName
    done
    

    !!! 这里准备工作已经做完了,在所有的节点使用下面的命令,看本地仓库是否有需要的所有镜像。

    curl -X GET http://192.168.14.99:5000/v2/_catalog

    2.2.3开始安装kubeflow

    https://v0-3.kubeflow.org/docs/started/getting-started/
    参考kubeflow的官网安装开始安装:
    下面是我的安装命令,这里大家根据自己情况定义好路径名即可:

    export KUBEFLOW_SRC=~/zoux/kubeflow
    mkdir ${KUBEFLOW_SRC}
    cd ${KUBEFLOW_SRC}
    export KUBEFLOW_TAG=v0.3.2
    curl https://raw.githubusercontent.com/kubeflow/kubeflow/${KUBEFLOW_TAG}/scripts/download.sh | bash
    export KFAPP=~/zoux/kubeflow/kubeflow_ks_ap
    ${KUBEFLOW_SRC}/scripts/kfctl.sh init ${KFAPP} --platform none
    cd ${KFAPP}
    ${KUBEFLOW_SRC}/scripts/kfctl.sh generate k8s
    

    到这里大家是不是发现我们最后一条apply命令还没执行,这里先打住。
    大家记不记得我们还没有替换kubeflow使用的镜像,现在就是时候了。
    在KFAPP路径下有俩个文件env.sh和ks_app文件夹。
    进入ks_app文件夹,我们可以看到有下面的文件:


    image.png

    将这些文件中,出现的gcr.io镜像都换成自己本地的镜像。

    这里文件很多,我实验发现只需要修改components/params.libsonnet 和 vendor/kubeflow/core/spartakus.libsonnet 俩个文件即可。只有这俩个文件中使用了定义了这些镜像。

    PS:可以使用grep -r 查找出现该镜像的文件(师兄告知)
    本人修改的params.libsonnet文件(供参考):
    https://github.com/zoux86/kubeflow/blob/master/params.libsonnet

    修改完之后,执行最后一条命令:
    ${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s
    这里kubeflow已经安装完成了。

    2.3 验证是否安装成功:

    kubectl get deployment -n kubeflow


    image.png

    kubectl get pod -n kubeflow


    image.png

    这里发现vizier-core和vizier-db俩个pod没有起来,是什么原因呢?

    原因是kubeflow的数据库vizier-db(其实就是mysql)需要使用持久化存储。这里我们可以使用:存储系统-基于NFS的PV服务。

    具体怎么操作请听下回分解:为kubeflow配置NFS做后端存储系统。

    相关文章

      网友评论

        本文标题:kubeflow--国内环境 安装

        本文链接:https://www.haomeiwen.com/subject/ncterqtx.html