kubeflow
1. 准备工作
1.0 确定需要下载的版本
1.0.1 确定需要下载的kubeflow版本
例如Kubeflow 1.10 | Kubeflow ,下面明确写了支持版本至少是k8s 1.32。
因此我们下载Kubeflow 1.9 | Kubeflow
其中写了Kustomize版本信息为:
Kustomize | 5.2.1 |
---|
进入1.9版本的branchkubeflow/manifests at v1.9.1-branch ,确认是否有新的小版本发布:发现1.9.1,且具有相同的版本支持信息
1.1 下载kustomize
Releases · kubernetes-sigs/kustomize
1 | wget https://gh-proxy.com/github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.6.0/kustomize_v5.6.0_linux_amd64.tar.gz |
1.2 下载安装包
1 | git clone git@github.com:kubeflow/manifests.git -b v1.9.1-branch |
1.3 修改包内容信息
修改storageclass:
1 | apps/katib/upstream/components/mysql/pvc.yaml |
1 | apiVersion: v1 |
修改APP_SECURE_COOKIES:
1 | vim ./apps/jupyter/jupyter-web-app/upstream/base/params.env |
1.4 设定默认storageclass
以防万一。官方要求是必须设定,但是理论上前述修改storage之后已经不需要设定。
1 | kubectl get sc |
1.5 修改nodeport
1 | find ./ -type f -exec grep -l "istio-ingressgateway" {} \; |
修改为以下内容:
1 | apiVersion: v1 |
1.6 修改ui配置文件(也可后改)
此处为Kubeflow的bug
1 | vim ./apps/pipeline/upstream/base/pipeline/ml-pipeline-ui-deployment.yaml |
增加如下环境变量
1 | - name: DISABLE_GKE_METADATA |
1.7 (废弃)helm部署方案
1.7.1 下载helm配置文件
1 | git clone git@github.com:alauda/kubeflow-chart.git |
1.7.2 设定默认storageclass
以防万一。官方要求是必须设定,但是理论上前述修改storage之后已经不需要设定。
1 | kubectl get sc kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' |
1.7.3 修改helm配置文件
1 | cd kubeflow-chart/kubeflow-chart-main/charts/kubeflow |
2. 部署
参考kubeflow/manifests at v1.9.1-branch
注意可能最新版本的部署命令有修改,下面的不一定准确
1 | while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done |
修改ui的bug(如果前面没有修改的话,或者仍然报错)
报错log:
1 | FetchError: request to http://metadata/computeMetadata/v1/instance/attributes/cluster-name failed, reason: getaddrinfo ENOTFOUND metadata |
页面报错:
1 | no healthy upstream |
修改方法:
1 | kubectl edit deployment ml-pipeline-ui -n kubeflow |
3. 访问
查看端口
1 | istio-system istio-ingressgateway NodePort 10.96.178.62 <none> 15021:30446/TCP,80:32287/TCP,443:31098/TCP 34m |
浏览器访问,默认账号密码为
1 | user@example.com |
建议提前测试,并拉取镜像:
1 | kubeflownotebookswg/jupyter-scipy:v1.9.2 |
4. 创建新用户
4.1 创建用户配置文件
1 | vim profile.yaml |
文件如下
1 | apiVersion: kubeflow.org/v1beta1 |
4.2 生成用户密码
1 | python3 -c 'from passlib.hash import bcrypt; import getpass; print(bcrypt.using(rounds=12, ident="2y").hash(getpass.getpass()))' |
4.3 添加新用户
1 | kubectl apply -f profile.yaml |
添加用户信息
1 | - email: testuser@163.com |
重启pod
1 | kubectl rollout restart deployment dex -n auth |
删除用户
1 | k delete Profile testuser |
5. 配置GPU
Installing the NVIDIA GPU Operator — NVIDIA GPU Operator
6. 升级
注意:必须符合k8s版本要求
再次构建并执行部署(参照上面的步骤)
可能需要手动清理旧的组件
参考
kubeflow部署与主要功能使用方案 - mumong - 博客园
【3】为kubeflow配置默认的StorageClass - 简书
部署Kubeflow版本1.4至Kubernetes集群 - Blog - Silicon Cloud
Installing Kubeflow | Kubeflow
alauda/kubeflow-chart: Kubeflow helm chart
kubeflow部署与主要功能使用方案 - mumong - 博客园
kubeflow部署与主要功能使用方案 - mumong - 博客园
Releases · kubernetes-sigs/kustomize
Release kustomize/v5.0.3 · kubernetes-sigs/kustomize
kubeflow/manifests at v1.9.1-branch
Installing Kubeflow | Kubeflow
玩转Kubeflow第一章: kubeflow 国内本地安装及案例介绍-阿里云开发者社区
GitHub 文件加速代理 - 快速访问 GitHub 文件
玩转Kubeflow第一章: kubeflow 国内本地安装及案例介绍-阿里云开发者社区
Installing the NVIDIA GPU Operator — NVIDIA GPU Operator
ml-pipeline-ui failing on metadata api · Issue #11247 · kubeflow/pipelines
pipelines/frontend/server/configs.ts at master · kubeflow/pipelines
- Title: kubeflow
- Author: Ethereal
- Created at: 2025-05-14 12:23:58
- Updated at: 2025-05-14 18:01:10
- Link: https://ethereal-o.github.io/2025/05/14/kubeflow/
- License: This work is licensed under CC BY-NC-SA 4.0.