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.ioquay.ioghcr.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

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

起名大废废

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

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

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

打赏作者

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

抵扣说明:

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

余额充值