第1章:环境准备——先把家伙事儿备齐
说实话,搞 vLLM 和 K8s 集成,最怕的不是后面的配置有多复杂,而是第一步环境就没搭好。我见过太多人卡在 Docker 起不来、K8s 集群连不上这种基础问题上。所以这一章,咱们先把地基打牢。
我个人习惯把环境准备分成四块:Docker 运行时、本地 K8s 集群、kubectl 命令行工具,以及最后的集群验证。一块一块来,别急。
2.1 安装 Docker
Docker 是整个容器化生态的基石。vLLM 的推理服务最终会打包成镜像跑在容器里,所以这一步绕不开。
我个人推荐用 Docker Desktop(Mac/Windows)或者直接 apt/yum 安装(Linux)。别用那种一键脚本,出了问题你都不知道去哪查日志。
Linux 上安装很简单:
# Ubuntu / Debian
sudo apt update
sudo apt install docker.io -y
# CentOS / RHEL
sudo yum install docker -y
sudo systemctl start docker
sudo systemctl enable docker
装完之后,记得把当前用户加到 docker 组里。不然每次都要 sudo,烦得很。
sudo usermod -aG docker $USER
# 然后退出重新登录,或者执行 newgrp docker
docker run hello-world
2.2 配置 Docker 镜像加速
嗯,这里要注意。国内拉 Docker 官方镜像,速度你懂的。我曾经在项目部署时,一个 PyTorch 镜像拉了半小时还没完,急得我直跺脚。
配置镜像加速器,说白了就是给 Docker 加个代理。国内常用的有阿里云、中科大、清华的源。我个人习惯用阿里云的,稳定。
编辑 /etc/docker/daemon.json(没有就新建一个):
{
"registry-mirrors": [
"https://你的加速地址.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
然后重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info 检查一下 Registry Mirrors 字段是否显示你的地址。
2.3 安装 Minikube 或 Kind
本地跑 K8s 集群,主流就两个选择:Minikube 和 Kind。怎么选?
| 特性 | Minikube | Kind |
|---|---|---|
| 底层实现 | 虚拟机(通常用 VirtualBox 或 HyperKit) | Docker 容器作为节点 |
| 启动速度 | 较慢(需要启动 VM) | 快(秒级启动) |
| 资源占用 | 较高 | 较低 |
| 适合场景 | 需要完整 K8s 体验,比如 LoadBalancer、存储卷 | 快速测试、CI/CD 环境 |
| vLLM 适配 | 推荐(GPU 穿透更方便) | 也可以,但 GPU 支持稍麻烦 |
我个人建议:如果你只是学 vLLM 集成,用 Kind 就够了,轻量快速。但如果你要测试 GPU 推理,那还是 Minikube 更靠谱。
安装 Minikube:
# Linux
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 --cpus=4 --memory=8192
安装 Kind:
# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# 创建集群
kind create cluster --name vllm-cluster
2.4 安装 kubectl 命令行工具
kubectl 是你和 K8s 集群对话的桥梁。没有它,你连 pod 都看不到。
安装方式很简单:
# Linux
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
# 验证版本
kubectl version --client
装完之后,kubectl 会自动读取 ~/.kube/config 文件。Minikube 和 Kind 在创建集群时都会自动生成这个文件,所以你不用手动配。
alias k=kubectl。再配合 kubectl completion bash 开启自动补全,效率翻倍。
2.5 验证 K8s 集群状态
环境搭没搭好,跑几个命令就知道了。别急着部署 vLLM,先确认集群是健康的。
# 查看集群信息
kubectl cluster-info
# 查看节点状态
kubectl get nodes
# 查看所有命名空间的 pod
kubectl get pods --all-namespaces
如果看到节点状态是 Ready,核心组件(如 coredns、kube-proxy)都在运行,那就说明环境准备好了。
"exec-opts": ["native.cgroupdriver=systemd"])。
还有一个我常用的验证方式——跑个 nginx 测试 pod:
kubectl run test-nginx --image=nginx --restart=Never
kubectl get pod test-nginx
# 等状态变成 Running 后,删除测试 pod
kubectl delete pod test-nginx
如果这个 pod 能正常跑起来,那你的集群就完全可用了。接下来就可以放心地部署 vLLM 了。
好了,环境准备就到这里。记住一句话:基础不牢,地动山摇。Docker 装好、镜像加速配好、集群跑起来、kubectl 能连上——这四个条件缺一个,后面的 vLLM 部署都会出幺蛾子。
我个人建议你把每一步的验证结果都截图保存,万一后面出问题,排查起来也有据可查。