2. 环境准备:部署K8s集群、安装vLLM镜像、配置kubectl
好,咱们正式开始动手了。这一章说白了就是搭台子——把K8s集群跑起来,把vLLM镜像拉下来,再把kubectl配好。这三件事搞定了,后面所有的实验才能落地。
我个人习惯是先搭一个本地集群来验证思路。生产环境当然用云上的托管集群,但本地调试阶段,Minikube或Kind完全够用。你想想看,要是连本地都跑不通,上生产那不是给自己挖坑吗?
2.1 选择本地集群工具:Minikube vs Kind
这两个工具我都用过,简单说说区别:
| 特性 | Minikube | Kind |
|---|---|---|
| 底层实现 | 虚拟机(通常用Docker驱动) | 容器(直接在Docker里跑) |
| 启动速度 | 较慢(约2-3分钟) | 快(约30秒) |
| 资源占用 | 较高 | 较低 |
| GPU支持 | 支持(需配置) | 有限 |
| 适用场景 | 需要完整K8s体验 | 快速验证、CI/CD |
我建议你选Minikube。为什么?因为咱们后面要跑vLLM推理服务,可能会用到GPU。Minikube对GPU的支持更成熟。Kind虽然快,但遇到GPU相关的问题时,排查起来比较头疼。
2.2 部署Minikube集群
嗯,这里我直接给命令。你照着敲就行,但我会在关键地方停下来解释。
# 安装Minikube(Linux/macOS)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群(指定驱动和资源)
minikube start --driver=docker --cpus=4 --memory=8192 --disk-size=20g
注意这里的参数:--cpus=4 和 --memory=8192。vLLM推理服务对内存和CPU都有要求,尤其是加载大模型的时候。我曾经在项目里因为只给了2GB内存,结果vLLM Pod一直CrashLoopBackOff,排查了半天才发现是OOM了。
启动完成后,验证一下:
minikube status
kubectl get nodes
看到节点状态为 Ready,说明集群起来了。
2.3 安装vLLM镜像
vLLM的镜像在Docker Hub上就有。我个人习惯用官方镜像,但有时候需要自己打一个带特定依赖的版本。这里先拉官方镜像:
# 拉取vLLM最新镜像
docker pull vllm/vllm-openai:latest
# 验证镜像是否存在
docker images | grep vllm
如果你在墙内网络环境,拉取可能会慢。我建议配置一下镜像加速器,或者用代理。嗯,这里有个小技巧:你可以先拉一个轻量级的镜像测试网络连通性,比如 docker pull alpine,通了再拉vLLM。
vLLM镜像大概有3-4GB,包含CUDA运行时和推理引擎。你想想看,这比直接装Python环境省事多了。以前部署推理服务要配CUDA、装PyTorch、再装vLLM,折腾半天。现在一个镜像全搞定。
docker run --gpus all nvidia/cuda:11.8-base nvidia-smi 测试一下。如果报错,说明NVIDIA Container Toolkit没装好。
2.4 配置kubectl工具
kubectl是K8s的瑞士军刀。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自动配置)
kubectl config use-context minikube
配置完成后,我习惯跑几个命令确认一切正常:
kubectl cluster-info
kubectl get pods -A
kubectl get svc
如果看到 kube-system 命名空间下的Pod都在运行,说明集群健康。
~/.bashrc 或 ~/.zshrc 里加一行 source <(kubectl completion bash)。这能省不少敲命令的时间。
2.5 验证环境:跑一个测试Pod
环境配好了,咱们跑个简单的Pod验证一下。用vLLM镜像启动一个测试容器:
cat <
如果看到vLLM的版本号输出,恭喜你,环境准备完毕!
Pending 状态,检查一下资源是否充足。用 kubectl describe pod vllm-test 查看事件,通常能发现是CPU或内存不足。
2.6 本章知识体系
下面这张图帮你理清本章的核心逻辑:
这张图把本章的四个核心步骤串起来了。你按这个顺序走,基本不会出问题。
2.7 常见问题与排查
- Minikube启动失败: 检查Docker是否运行,试试
minikube delete再重新minikube start。 - vLLM镜像拉取超时: 配置Docker镜像加速器,或者用代理。我一般用
--registry-mirror参数。 - kubectl无法连接集群: 运行
kubectl config view查看当前上下文,确保指向minikube。 - Pod一直Pending: 用
kubectl describe pod查看事件,通常是资源不足。
公众号:蓝海资料掘金营,微信deep3321