2、环境准备:Kubernetes集群搭建(Minikube)、Kubeflow安装(kfctl)、Dashboard访问
说实话,很多初学者在Kubeflow上栽的第一个跟头,不是模型写错了,而是环境没搭好。我自己就经历过——花了两天装Kubeflow,结果Dashboard死活打不开,最后发现是Minikube的内存给少了。嗯,这节课咱们就把这些坑提前填上。
2.1 为什么选Minikube?
你可能会问:生产环境都用的是多节点集群,为什么教程里老用Minikube?
原因很简单——本地开发调试最方便。Minikube能在你笔记本上跑一个单节点Kubernetes集群,资源占用可控,出了问题也好排查。我在项目中经常用它做POC验证,等逻辑跑通了再迁移到生产集群。
当然,Minikube不是万能的。它不适合压测,也不适合跑大规模分布式训练。但作为学习Kubeflow的起点,它刚刚好。
2.2 硬件与软件要求
先看看你的机器够不够格。我建议的最低配置:
| 资源 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核 |
| 内存 | 4GB | 8GB |
| 磁盘 | 20GB | 40GB |
| 操作系统 | Linux/macOS | Ubuntu 20.04+ |
2.3 安装Minikube
安装过程其实不复杂,但有几个细节容易出错。我习惯用二进制安装,干净利落。
# 下载Minikube二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 安装
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 验证安装
minikube version
装完之后,启动集群。这里有个关键参数——--cpus和--memory,千万别用默认值,否则Kubeflow装到一半就会OOM。
# 启动Minikube,分配足够资源
minikube start --cpus=4 --memory=8192 --disk-size=20g
# 检查集群状态
kubectl get nodes
minikube delete 清理,再重试。我遇到过好几次因为上次残留配置导致启动报错的情况。
2.4 安装kubectl
Minikube自带kubectl,但我建议单独装一份,版本更可控。
# 下载kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 赋予执行权限并移动
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 验证
kubectl version --client
装好后,Minikube会自动配置kubeconfig,所以kubectl get pods应该直接能用。如果不行,执行minikube update-context。
2.5 安装Kubeflow(kfctl方式)
Kubeflow的安装方式有好几种,我个人最推荐kfctl。为什么?因为它把整个安装过程抽象成了一个配置文件,你只需要改几个参数就行。
不过要注意,kfctl在v1.3之后就不再更新了,新版本推荐用kubectl+manifests方式。但作为学习,kfctl依然是最直观的。
# 下载kfctl
wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0efb0d0_linux.tar.gz
tar -xvf kfctl_v1.2.0-0efb0d0_linux.tar.gz
sudo mv kfctl /usr/local/bin/
# 设置环境变量
export KF_NAME="my-kubeflow"
export BASE_DIR="/home/$USER/kubeflow"
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.2-branch/kfdef/kfctl_k8s_istio.v1.2.0.yaml"
# 创建目录并安装
mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl apply -V -f ${CONFIG_URI}
安装完成后,检查所有Pod是否正常运行:
kubectl get pods -n kubeflow
正常情况下,你会看到几十个Pod,状态都是Running或Completed。如果有CrashLoopBackOff,别慌,八成是资源不够。
2.6 访问Dashboard
Kubeflow装好了,怎么进去?用port-forward把服务暴露到本地。
# 转发Istio Ingress Gateway端口
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
然后打开浏览器,访问 http://localhost:8080。你会看到Kubeflow的中央Dashboard。
默认用户名和密码是:
- 用户名:
admin@kubeflow.org - 密码:
12341234
2.7 避坑指南
这里总结几个我踩过的坑,你遇到了可以直接对照排查:
- Pod一直Pending:检查Minikube资源是否足够,执行
minikube status查看。 - Dashboard白屏:可能是端口转发断了,重新执行port-forward命令。
- 安装卡在某个步骤:网络问题居多,试试挂代理或换镜像源。
- kfctl apply报错:检查YAML配置文件路径是否正确,我曾经手抖写错了版本号。
2.8 知识体系总览
下面这张图帮你理清本章的核心逻辑:
说白了,整个流程就是一条直线:检查硬件 → 装Minikube → 装kubectl → 装Kubeflow → 访问Dashboard。每一步都有对应的坑,但只要你按上面的步骤来,基本一次过。
好了,环境准备好了。下一节咱们就开始玩真的——用Kubeflow跑第一个实验。