1月19日:
修复了一些错误,加入了一些阿里云的链接,希望路过的童鞋不顺路点一下,给一些动力,感谢
经多次验证,v0.5.1版本已可以安装,但是安装后还是还是会存在一些问题,我会近期尽量赶一个常见的修复说说明, 简单修改一下配置文件即可。
——————————————分割线————————————————
更新百度云连接,百度云里面已完成第二步修改参数,百度云
提取码:27o8
#建立一个kubeflow文件夹
mkdir kubeflow
#设置版本号
export KUBEFLOW_TAG=v0.4.1
#下载相关文件
curl https://raw.githubusercontent.com/kubeflow/kubeflow/${KUBEFLOW_TAG}/scripts/download.sh | bash
——————————————分割线———————————————————————————
注:此处修改是因为,kubeflow是google的项目,拉的镜像是“大型局域网”内没有的,需要从“大型局域网”外拉取。 此外其他的教程里面有人使用阿里云修改tag也可以实现。
若所搭建服务器可以实现科学上网,建议在work节点处于科学上网的环境下,这样修改参数这步可以跳过直接进行下一步安装
2.ambassador.libsonnet文件里面
selector: {
service: "ambassador",
},
#注意一下一共有两个
下面的type后面参数改为 “NodePort” 此处主要是将kubeflow的内网端口映射到外网,以便开启外网的 web访问
更新: 此处仍然可以修改 ,没有修改也没事, 后期会告诉大家如何在安装好后重新映射端口出去
————————————————————分割线————————————————
开始安装主要是3条命令
scripts/kfctl.sh init config --platform none
#生成配置文件
cd config
#进入文件夹
../scripts/kfctl.sh generate k8s
#注意,此处两条命令很容易因为网络或者其他原因写入失败
#需要rm -rf ks_app当前文件夹下的ks_app整个文件夹,然后继续执行 上一条命令
#此处运气不好可能会循环数十遍,运气好一次成功
../scripts/kfctl.sh apply k8s
#写入,也会出现上条出现的情况,重新执行即可,不用再删除文件夹
执行成功后会会创建若干 pod
ps :生成的ks文件夹里面有很多文件, 其中包括即将要创建的pod信息, 感兴趣的可以进去搜着看一下
——————————————————分割线————————————————
准备好下载好的镜像包,上传到work节点,执行.sh文件
#chmod +x auto.sh
#./auto.sh
#此处脚本更新, 需要自行建立.sh将以下的脚本拷贝进去
#/bin/bash
for img in $(ls | grep tar.gz)
do
docker load < $img
done
刚刚将镜像拉去方式由“一直”, 改为了如果本地存在就从本地拉去, 这样解决了无法从“大型局域网”外拉去镜像
ps:
后来有部分人询问这块,这块有两点需要注意一下, 一个是"auto.sh" 是我自己写的一个脚本,没有啥复杂的,就是把镜像load在节点。
另一个是 load 的位置是在work节点,前言里面已经提到,这点images是pod所需要的,pod最后都是被分配在work节点,所以这点镜像是work节点所需要的
另外,严格的说:如果你的work节点在2个以上, 你所get 到的pod 是分布在不同的节点上的,只是此处为了方便才给每一个节点推送全部的images , 但是如果到了实际的过程中, work节点过了4个以上, 给每一个节点推images是一种很浪费资源的方法, 大家可以尝试自己搭建仓库或者其他方法去解决一下~
此时查询
kubectl get pod -n kubeflow
发现仍然存在几个等待状态的pod ,是因为这几个pod是数据库,需要创建持久化pv,便可
——————————————————————分割线——————————————————
vizier-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: vizier-pv2
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/pv1"
#hostPath是本地目录的意思,持久化存储还可以部署在具有写权限的nfs服务器中
mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/pv2"
minmo-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: minmo-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/pv3"
kubectl create -f vizier-pv.yaml
kubectl create -f mysql-pv.yaml
kubectl create -f minmo-pv.yaml
查询pod状态用get pod
kubectl get pod -n kubeflow
查询端口将pod 改为svc
kubectl get svc -n kubeflow
查询端口状态以及内部ip
kubectl get pod -n kubeflow -o wide
注意:
1、非常抱歉没有图片展示,本人尽可能的用文字表述清楚,如果有疑问随时评论,意见或者建议也可以写在下面。
2、所有教程具有时效性,但是道理不变,例如基础三个镜像,在本人4月份搭建的时候还可以使用,6月份也无法从“大型局域网”内自动拉去,所以本人从其他的搭建好的集群save了一个,以后可能还可能存在其他镜像之前可以自动拉,之后无法拉的,去“大型局域网”外拉一个就可以了。
3、有科学上网的是最好的 ,可以省掉最麻烦的找镜像的步骤。(要求时work节点科学上网)
4、出来的kubeflow0.5.1了, 部署原理是一样的,因为新版本的pod更多了,所以需要更改更多的“镜像本地拉取”,然后去”大型局域网“外save回来的镜像更多了,目前找到的需要修改的地方
········1、 /kubeflow/katib 下的 studyjobcontroller.libsonnet
··········/kubeflow/pipeline 下的所有pip开头的文件
··········/kubeflow/jupyter/notebook_controller.libsonnet
··········/kubeflow/jupyter/jupyter-web-app.libsonnet
(jupyter-web-app 修改会出错, 可以在创建完成后修改)
··········/kubeflow/profiles
里面的imagePullPolicy后面值改为 “IfNotPresent” 注意大小写
········ 2、5.1的镜像地址,和当时”大型局域网“外服务器下载的脚本
…链接:https://pan.baidu.com/s/1ZeV5PU9Ny_-FlBq3yWfTuw
…提取码:g0tj
…~~这个0.5.1由于时间原因没有 auto.sh,大家需要自己手动load一下,建议脚本批量load ~~
更新:
新增加几个已找到的需要修改为“IfNotPresent”的,这次应该是比较其了,如果后面有漏掉的可以用kubectl edit 来编辑,这个命令是可以安装完成后使用的
另外,增加了两个kubeflow所需要的镜像,这次的kubeflow v0.5.1应该是更全了
感谢大家,辛苦的看完了全文,相互学习哈, 有啥需要修改的及时联系
另外,云服务器选型有疑问的可以联系本人