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+
⚠️ 注意:Windows用户建议用WSL2,别直接在Windows上跑Minikube。我曾经试过,网络配置能让人崩溃。

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}
🔑 关键点:安装过程会拉取大量Docker镜像,耗时较长。建议提前配好镜像加速器,否则你会等到怀疑人生。

安装完成后,检查所有Pod是否正常运行:

kubectl get pods -n kubeflow

正常情况下,你会看到几十个Pod,状态都是RunningCompleted。如果有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
⚠️ 注意:生产环境一定要改密码!我见过有人把默认密码直接提交到GitHub,结果集群被挖矿程序入侵了。

2.7 避坑指南

这里总结几个我踩过的坑,你遇到了可以直接对照排查:

  • Pod一直Pending:检查Minikube资源是否足够,执行minikube status查看。
  • Dashboard白屏:可能是端口转发断了,重新执行port-forward命令。
  • 安装卡在某个步骤:网络问题居多,试试挂代理或换镜像源。
  • kfctl apply报错:检查YAML配置文件路径是否正确,我曾经手抖写错了版本号。

2.8 知识体系总览

下面这张图帮你理清本章的核心逻辑:

Kubeflow实验环境搭建流程 硬件与OS检查 安装Minikube 安装kubectl kfctl安装Kubeflow port-forward访问Dashboard 常见避坑点 • 内存不足 → Pod Pending • 网络问题 → 安装卡住 • 端口转发断 → 白屏 • 默认密码 → 安全风险 • 版本不匹配 → 安装失败

说白了,整个流程就是一条直线:检查硬件 → 装Minikube → 装kubectl → 装Kubeflow → 访问Dashboard。每一步都有对应的坑,但只要你按上面的步骤来,基本一次过。

好了,环境准备好了。下一节咱们就开始玩真的——用Kubeflow跑第一个实验。


专注资料整理