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相关的问题时,排查起来比较头疼。

我的小建议: 如果你机器内存小于8GB,建议用Kind。Minikube默认会吃不少资源,低配机器跑起来会卡。

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,说明集群起来了。

避坑指南: 如果你用的是Windows,记得先装好Docker Desktop并开启WSL2。我曾经帮一个同事排查,他Minikube启动失败,最后发现是Hyper-V和WSL2冲突了。

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版本支持GPU。运行 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都在运行,说明集群健康。

我的经验: 建议开启kubectl的自动补全功能。在 ~/.bashrc~/.zshrc 里加一行 source <(kubectl completion bash)。这能省不少敲命令的时间。

2.5 验证环境:跑一个测试Pod

环境配好了,咱们跑个简单的Pod验证一下。用vLLM镜像启动一个测试容器:

cat <

如果看到vLLM的版本号输出,恭喜你,环境准备完毕!

注意: 如果Pod一直处于 Pending 状态,检查一下资源是否充足。用 kubectl describe pod vllm-test 查看事件,通常能发现是CPU或内存不足。

2.6 本章知识体系

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

环境准备核心流程 选择集群工具 Minikube / Kind 部署K8s集群 minikube start 安装vLLM镜像 docker pull vllm 配置kubectl kubectl config 验证环境 跑测试Pod 四个步骤环环相扣,缺一不可

这张图把本章的四个核心步骤串起来了。你按这个顺序走,基本不会出问题。

2.7 常见问题与排查

  • Minikube启动失败: 检查Docker是否运行,试试 minikube delete 再重新 minikube start
  • vLLM镜像拉取超时: 配置Docker镜像加速器,或者用代理。我一般用 --registry-mirror 参数。
  • kubectl无法连接集群: 运行 kubectl config view 查看当前上下文,确保指向minikube。
  • Pod一直Pending:kubectl describe pod 查看事件,通常是资源不足。
一句话总结: 环境准备就三件事——集群跑起来、镜像拉下来、kubectl配好。这三件事搞定了,后面就是水到渠成的事。

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

专注资料整理