
kubeflow国内单机本地安装(官网、kind、wsl2、jupyter notebook创建)
写在前面
这是Kubeflow Manifest地址 Kubeflow Manifest ,经过少量修改(只改了一个文件,添加了几个文件),可以在国内安装的笔记。
非常感谢public-image-mirror地址 public-image-mirror 提供的镜像加速,使得很多在国外的镜像,在国内也可以下载,只需要改变仓库名(添加.m.daocloud
)。
这里也包括我安装时踩坑记录
这是国内单机本地安装
这是笔者源码在github上的地址modify_kubeflow_manifest
环境
Windows11专业版
WSL2
Ubuntu-22.04
WSL 版本: 1.1.6.0
内核版本: 5.15.90.1
WSLg 版本: 1.0.50
MSRDC 版本: 1.2.3770
Direct3D 版本: 1.608.2-61064218
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.23451.1000
docker-23.0.2(Linux安装,非windows桌面版)
kind-0.18.0
kubectl-1.25
kustomize-5.0.0
python3
版本
前置条件
kind
kind下载地址
kind version
kind v0.18.0 go1.20.2 linux/amd64
kind可以创建多个节点的集群或者多个集群(官网文档 )
kind是可以载入本地镜像到集群中的,但是速度好像没有快多少,所以笔者包载入镜像的Shell(在笔者的github中的pull_and_kind_load_dockerimages.sh
)注释掉了,用docker拉取镜像到本地当然也注释掉了,有需要可以更改。
以下是复制官网的Linux下载命令
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.18.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kubectl
官网要求(最多1.25)
kubectl下载地址 下载需要指定版本
kubectl version
Client Version: version.Info{Major:“1”, Minor:“25”, GitVersion:“v1.25.0”, GitCommit:“a866cbe2e5bbaa01cfd5e969aa3e033f3282a8a2”, GitTreeState:“clean”, BuildDate:“2022-08-23T17:44:59Z”, GoVersion:“go1.19”, Compiler:“gc”, Platform:“linux/amd64”}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:“1”, Minor:“26”, GitVersion:“v1.26.3”, GitCommit:“9e644106593f3f4aa98f8a84b23db5fa378900bd”, GitTreeState:“clean”, BuildDate:“2023-03-30T06:34:50Z”, GoVersion:“go1.19.7”, Compiler:“gc”, Platform:“linux/amd64”}
以下是复制官网的Linux(x86-64)下载命令,安装1.25.0
需要root权限,没有的参考官网
curl -LO https://dl.k8s.io/release/v1.25.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kustomize
虽然kubectl中有kustomize,版本不对,要单独下载,根据官网要求至少5.0.0
kustomize下载地址
kustomize version
v5.0.0
根据系统选择,笔者选择的是kustomize_v5.0.0_linux_amd64.tar.gz
tar -zxvf kustomize_v5.0.0_linux_amd64.tar.gz
chmod +x ./kustomize
sudo mv kustomize /usr/local/bin
docker
docker version
Client: Docker Engine - Community
Version: 23.0.2
API version: 1.42
Go version: go1.19.7
Git commit: 569dd73
Built: Mon Mar 27 16:16:30 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.2
API version: 1.42 (minimum version 1.12)
Go version: go1.19.7
Git commit: 219f21b
Built: Mon Mar 27 16:16:30 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.20
GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
runc:
Version: 1.1.5
GitCommit: v1.1.5-0-gf19387a
docker-init:
Version: 0.19.0
GitCommit: de40ad0
python
python3
步骤
第一步 克隆仓库
克隆笔者github上源码modify_kubeflow_manifest
- errimages.txt是放置不能拉取的镜像
- erim.py是按照errimages.txt修改example/kustomization.yaml和产生pullimages.txt的python程序。
- kind-ingress-config.yaml是用kind创建节点的配置文件
- ori_kustomization.yaml是kubeflow git官网原本example/kustomization.yaml的配置文件
- pull_and_kind_load_dockerimages.sh是要执行的Shell文件
第二步 添加失败镜像
只要填写
errimages.txt
,也就是将不能拉取的gcr.io
、quay.io
、ghcr.io
开头的镜像复制进去
原本是笔者不能拉取的镜像列表
还有不能拉取的加入errimages.txt
,查看上面的加速镜像的git网站,手动更改一下erim.py
代码(修改改变仓库名的逻辑)
第三歩 复制文件
解压
manifests.tar.gz
(这是kubeflow manifests的源文件)
将这里的除README.md
、.git
、屏幕截图
、压缩包
外的文件复制到解压的官网manifests目录
下
第四步 执行.sh程序
注意:在运行前,如果对挂载、节点等有要求,先修改
kind-ingress-config.yaml
(里面笔者挂载了本地的jupyterlab的目录)
注意:用docker拉取镜像到本地和用kind载入本地镜像到集群已经注释了。(因为速度没快多少。)注意:要在解压后的官网manifests目录下(复制好上一步的文件)执行。(当然也可以自己克隆官网,在复制文件到它目录下面,再执行。)
这步包括:修改宿主机打开文件个数限制
----导出镜像列表,更改配置文件(example/kustomization.yaml)
----建立集群(一个节点)
----启动(初始化)kubeflow(无限循环,不会结束,可以手动结束)
在解压的官网manifests目录下运行pull_and_kind_load_dockerimage.sh
第五步 补充
根据下面的Warning进行补充操作
Warning
warning1 解决没有auth(namespace)的问题
如果没有
auth(namespace)
,重新用这条命令加载,在打开另一个终端输入kustomize build common/dex/overlays/istio | kubectl apply -f -
warning2 解决后面出现的镜像拉取镜像的问题
记得如果
kubeflow-user-example-com
或者auth
(两个都是namespace) 中的pod 镜像加载错误,就手动修改(添加.m.daocloud
)
因为可能后面加载的pod,image还是拉取国外kubectl edit pod -n namespace podname
warning3 临时映射界面端口的问题
踩坑踩坑,注意是对
ingressgateway
服务(svc)进行端口映射,不是对pod…
临时端口映射,登录浏览器(127.0.0.1:8080
)输入账号user@example.com
输入密码12341234
kubectl port-forward -n istio-system svc/istio-ingressgateway 8080:80
warning4 添加本地目录到持久卷的问题
补充
从本地(宿主机)将目录挂载到集群中,笔者要用到本地的jupyterlab目录的代码和数据,所以声明到pvc中,使用时引用pvc
的name。kubectl create -f data-pv-hostpath.yaml
(其中持久卷挂载的源目录是/home,和上面kind-ingress-config.yaml中的containerPath: /home要一样)kubectl create -f data-pvc.yaml
(持久卷声明,使用了上面的持久卷,当要使用的时候就将它的name声明在volumns中)
安装成功
所有运行的pod
kubeflow界面
使用kubectl port-forward -n istio-system svc/istio-ingressgateway 8080:80
进行临时端口映射,访问本地浏览器127.0.0.1:8080,出现界面。
Create a new notebook
步骤
定义最小CPU和内存
定义工作空间空白卷大小(建议默认)
挂载本地路径的数据卷
添加已有的volume
使用Custom类型
数据卷的相关配置文件
在使用数据卷声明前
先创建笔者github中的data-pv-hostpath.yaml和data-pvc.yaml。
然后在claimName填上data-pvc.yaml
中的name
。
最后LAUNCH
kubectl create -f data-pv-hostpath.yaml
kubectl create -f data-pvc.yaml
更多推荐
所有评论(0)