环境准备:搭建你的第一个本地 K8s 集群
说实话,很多初学者一上来就被「集群」两个字吓住了。其实说白了,咱们现在要做的,就是在你手头的这台电脑上,模拟出一个迷你版的 Kubernetes 环境。我当年刚接触 K8s 时,也是从这一步开始的。别怕,跟着我来,半小时内你就能跑起来。
选择你的武器:Minikube 还是 Kind?
这两个工具都能帮你快速搭建本地集群。我个人更倾向于根据场景来选择:
- Minikube:适合需要完整 K8s 体验的场景。它会在你的电脑上启动一个虚拟机,里面跑着完整的 K8s 集群。我在项目中用它来测试复杂的网络策略和存储卷挂载。
- Kind:轻量级选手。它把 K8s 节点跑在 Docker 容器里。启动速度快,资源占用少。我平时做快速原型验证时,首选 Kind。
我的建议:如果你是第一次接触 K8s,从 Minikube 开始。它更像一个「真正的」集群,能让你体验到更多细节。等你熟悉了,再试试 Kind 的轻快。
安装 Minikube
嗯,这里要注意一下系统差异。我以 Linux/macOS 为例,Windows 用户请用 WSL2。
# 下载 Minikube 二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 安装
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群(默认使用 Docker 驱动)
minikube start --driver=docker
启动成功后,你会看到类似这样的输出:
😄 minikube v1.32.0 on Ubuntu 22.04
✨ Using the docker driver based on existing profile
👍 Starting control plane node minikube in cluster minikube
🏄 Done! kubectl is now configured to use "minikube" cluster
小技巧:如果启动失败,八成是 Docker 没装好或者资源不够。我曾经在 4GB 内存的笔记本上硬跑 Minikube,结果卡得怀疑人生。建议至少分配 2 个 CPU 和 4GB 内存。
安装 Kind
如果你选择 Kind,安装更简单:
# 使用 Go 安装
go install sigs.k8s.io/kind@latest
# 或者用 Homebrew(macOS)
brew install kind
# 创建集群
kind create cluster --name vllm-cluster
Kind 的启动速度真的快,十几秒就能搞定。我经常用它来做 CI/CD 的测试环境。
安装 kubectl:你的集群遥控器
kubectl 是操作 K8s 集群的命令行工具。没有它,你就像没有方向盘的车。
# 下载最新版本
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 赋予执行权限并移动到 PATH
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 验证安装
kubectl version --client
安装完成后,试试能不能和集群通信:
# 查看集群节点
kubectl get nodes
# 如果是 Minikube,会自动配置上下文
# 如果是 Kind,也会自动配置
避坑指南:我曾经遇到过 kubectl 版本和集群版本不匹配的问题。kubectl 的版本可以比集群高一个次要版本,但最好不要低。建议保持 kubectl 为最新稳定版。
配置 Docker 与 GPU 支持
咱们要跑 vLLM 推理服务,GPU 是绕不开的。说白了,没有 GPU,大模型推理慢得像蜗牛爬。
安装 Docker
# Ubuntu 系统
sudo apt-get update
sudo apt-get install docker.io
# 启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
# 重新登录终端生效
配置 NVIDIA Container Toolkit
这一步很关键。Docker 默认不认识 GPU,需要安装 NVIDIA 的插件。
# 添加 NVIDIA 的仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 安装
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# 重启 Docker 服务
sudo systemctl restart docker
# 验证 GPU 是否被识别
docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
验证成功标志:如果看到 GPU 的详细信息(型号、显存、驱动版本),说明配置成功。我见过有人卡在这一步,最后发现是 NVIDIA 驱动没装好。记得先跑 nvidia-smi 确认驱动正常。
让 Minikube 也能用 GPU
如果你用的是 Minikube,还需要额外配置:
# 启动时指定 GPU 支持
minikube start --driver=docker --gpus all
# 或者对已有集群启用
minikube addons enable nvidia-gpu-device-plugin
嗯,这里有个坑。Minikube 的 GPU 支持依赖 Docker 驱动。如果你用的是 VirtualBox 驱动,那就没法直通 GPU 了。我建议直接用 Docker 驱动,省心。
验证整个环境
最后,我们来确认一切就绪:
# 1. 检查集群状态
kubectl cluster-info
# 2. 检查节点
kubectl get nodes -o wide
# 3. 检查 GPU 节点(如果有)
kubectl describe node | grep -i gpu
如果一切正常,你会看到集群信息、节点状态,以及 GPU 相关的标签。
我的习惯:每次搭建新环境后,我都会跑一个简单的 Pod 来测试。比如 kubectl run test --image=nginx,确认调度和网络都正常。这一步能帮你提前发现很多隐藏问题。
本章知识体系
下面这张图帮你理清今天搭建的各个组件之间的关系:
从下往上看,硬件层提供算力,容器运行时层让 Docker 能调用 GPU,K8s 集群层负责编排调度,最后我们用 kubectl 来指挥一切。每一层都依赖下一层正常工作。
好了,环境准备就到这里。你现在应该有一个能跑起来的本地 K8s 集群,并且 Docker 也能识别 GPU 了。下一章我们会真正开始部署 vLLM 推理服务,到时候这些准备工作就会派上用场。