环境准备:安装Docker、安装Minikube、安装kubectl、配置Kubernetes集群

说实话,很多初学者在Kubeflow上栽跟头,不是因为Kubeflow本身有多难,而是环境没搭好。我见过太多人花了两天时间装环境,最后发现是Docker版本不对,或者Minikube内存给少了。这一章,咱们就把这些坑提前填上。

核心目标:在你的本地机器上,搭建一个能跑Kubeflow的Kubernetes环境。说白了,就是先造一辆能开的车,后面再装引擎和内饰。

1. 安装Docker——一切的基础

Kubernetes跑容器,容器靠Docker。这是最底层的东西。我个人习惯用Docker Desktop,因为它图形化界面做得不错,对新手友好。

安装步骤(以Ubuntu为例):

# 更新包索引
sudo apt-get update

# 安装依赖包
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置稳定版仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证安装
sudo docker run hello-world

小技巧:安装完后,记得把当前用户加到docker组里,这样就不用每次敲sudo了。

sudo usermod -aG docker $USER
newgrp docker

我在项目中遇到过一个问题:Docker安装好了,但拉取镜像特别慢。嗯,这里要注意,国内用户一定要配置镜像加速器。你想想看,从Docker Hub拉一个几百MB的镜像,不加速的话,等得花儿都谢了。

# 配置Docker镜像加速器(以阿里云为例)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 安装Minikube——本地K8s集群

为什么用Minikube?说白了,它是最轻量的本地Kubernetes方案。你不需要三台服务器,一台笔记本就够了。我曾经试过用Kind,但Minikube的生态更成熟,踩坑的人多,解决方案也多。

安装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

启动集群:

# 启动Minikube,分配2个CPU和4GB内存
minikube start --cpus=2 --memory=4096

# 检查状态
minikube status

避坑指南:我曾经因为Minikube内存给少了,导致Kubeflow组件启动失败。Kubeflow对资源要求不低,建议至少给4GB内存。如果你机器配置好,给8GB更稳妥。

启动成功后,你会看到类似这样的输出:

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

3. 安装kubectl——K8s的遥控器

kubectl就是Kubernetes的命令行工具。没有它,你就像开车没有方向盘。我个人习惯用最新稳定版,因为Kubeflow对K8s版本有要求,用新版兼容性更好。

# 下载最新稳定版kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# 安装
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# 验证
kubectl version --client

小技巧:配置kubectl自动补全,能省不少时间。

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

4. 配置Kubernetes集群——让一切跑起来

现在三个工具都装好了,但还需要把它们串起来。Minikube启动时会自动生成kubeconfig文件,kubectl默认会读取这个文件。你只需要验证一下连通性。

# 查看集群信息
kubectl cluster-info

# 查看节点状态
kubectl get nodes

# 查看所有命名空间的Pod
kubectl get pods --all-namespaces

如果一切正常,你会看到类似这样的输出:

NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   5m    v1.24.3

验证集群健康:

# 部署一个测试应用
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

# 暴露服务
kubectl expose deployment hello-minikube --type=NodePort --port=8080

# 访问服务
minikube service hello-minikube

为什么会这样?因为Minikube帮你把K8s的控制平面和节点都跑在一个虚拟机里。你想想看,这相当于在一台电脑上模拟了整个数据中心。对于学习和开发来说,完全够用了。

知识体系总览

下面这张图,帮你理清这三个工具的关系:

Docker(容器运行时) 负责构建、运行和管理容器 Minikube(本地K8s集群) 在本地创建单节点Kubernetes集群 kubectl(K8s命令行工具) 与Kubernetes API交互,管理集群资源 三层架构:Docker提供容器 → Minikube编排容器 → kubectl管理集群

常见问题排查

问题 原因 解决方案
Minikube启动失败 虚拟化未开启 BIOS中开启VT-x/AMD-V
kubectl无法连接 kubeconfig未配置 运行 minikube update-context
Docker拉取镜像慢 未配置镜像加速器 配置国内镜像源
Pod一直Pending 资源不足 增加Minikube内存/CPU

重要提醒:如果你用的是Windows或macOS,建议直接用Docker Desktop自带的Kubernetes功能。但为了和Kubeflow兼容性更好,我还是推荐用Minikube。我在Windows上踩过Docker Desktop K8s和Kubeflow版本不匹配的坑,后来换成Minikube就稳了。

好了,环境准备到这里就结束了。你现在应该有一个能正常运行的Kubernetes集群。下一章,我们会在这个集群上部署Kubeflow。嗯,到时候你会发现,前面的准备工作做得越扎实,后面就越顺利。


公众号:蓝海资料掘金营,微信deep3321