1、课程导学与环境准备:vLLM与K8s是什么?为什么需要容器化部署?课程目标与前置知识。安装Docker、Minikube、kubectl。

大家好,我是你们的AI运维讲师。今天咱们正式开课,聊聊vLLM和Kubernetes(简称K8s)这对黄金搭档。

说实话,我刚开始接触大模型推理时,也踩过不少坑。模型跑起来了,但一到高并发就崩;换台机器部署,环境配置能折腾一整天。后来我意识到——容器化+K8s,才是解决这些问题的终极方案。

1.1 vLLM是什么?K8s又是什么?

vLLM,全称是Very Large Language Model。它不是一个模型,而是一个高性能推理引擎。说白了,就是让大模型跑得更快、更省显存、支持更高并发的工具。

我个人的理解是:vLLM就像给大模型装上了涡轮增压。它用PagedAttention技术管理显存,把推理吞吐量提升了2-4倍。我在项目中遇到过,同样的模型,用vLLM部署后,QPS从50直接飙到200+。

Kubernetes(K8s),是Google开源的容器编排平台。你可以把它想象成一个智能管家,负责管理你的容器化应用——自动部署、自动扩缩容、自动恢复。

为什么需要K8s?你想想看,如果只有一个模型实例,用户一多就卡死。K8s可以自动帮你拉起10个、20个实例,流量高峰过去再自动缩回去。这不就是运维的终极梦想吗?

核心关系图:vLLM + K8s = 高性能 + 高可用

vLLM + K8s 容器化部署知识体系 vLLM推理引擎 高性能推理 PagedAttention 高并发支持 Docker容器化 环境一致性 快速部署 资源隔离 Kubernetes编排 自动扩缩容 负载均衡 故障自愈 最终目标:生产级大模型推理服务 高性能 · 高可用 · 易运维

1.2 为什么需要容器化部署?

这个问题我经常被问到。我的回答很简单:环境一致性

你想想看,本地开发环境跑得好好的,一上测试服务器就报错。为什么?CUDA版本不对、Python包冲突、系统库缺失……这些坑我全都踩过。

容器化部署的好处,我用一个表格说清楚:

对比项 传统部署 容器化部署
环境一致性 每台机器手动配置,容易出错 镜像打包,一次构建到处运行
部署速度 30分钟起步 秒级启动
资源隔离 进程级隔离,互相干扰 容器级隔离,互不影响
扩缩容 手动操作,容易出错 自动扩缩,弹性伸缩
版本管理 依赖包版本混乱 镜像版本化管理,回滚方便

💡 个人经验:我曾经帮一个团队排查问题,发现测试环境和生产环境的CUDA版本差了0.1,导致模型推理结果不一致。容器化后,这种问题再也没出现过。

1.3 课程目标与前置知识

这门课的目标很明确:让你从零开始,学会把vLLM模型容器化,并部署到Kubernetes集群上

具体来说,学完这门课,你能做到:

  • 理解vLLM和K8s的核心概念
  • 熟练使用Docker打包vLLM模型
  • 在Minikube上搭建本地K8s环境
  • 编写K8s YAML文件部署vLLM服务
  • 配置自动扩缩容和负载均衡
  • 监控和排查常见问题

前置知识要求:

  • 会基本的Linux命令(cd、ls、vim等)
  • 了解Python基础(能看懂pip install就行)
  • 对容器有基本概念(用过Docker更好)
  • 不需要K8s经验——我会手把手带你入门

⚠️ 注意:如果你完全没接触过Linux,建议先花1小时学一下基本命令。否则后面操作会有点吃力。

1.4 安装Docker、Minikube、kubectl

好,理论说完了,咱们动手。先把环境搭起来。

1.4.1 安装Docker

Docker是容器化的基础。我建议用官方脚本安装,最省事。

# Ubuntu/Debian系统
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 验证安装
docker --version
# 输出示例:Docker version 24.0.7, build afdd53b

# 把当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER
# 退出重新登录,或者执行 newgrp docker

💡 避坑指南:我曾经遇到过docker安装后无法启动的情况。检查一下是不是WSL2没开启?Windows用户记得在PowerShell执行 wsl --set-default-version 2

1.4.2 安装Minikube

Minikube是本地K8s集群的最佳选择。它会在你的电脑上启动一个单节点集群,非常适合学习和测试。

# 下载Minikube二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 启动Minikube(使用Docker驱动)
minikube start --driver=docker

# 验证集群状态
minikube status
# 输出示例:
# minikube
# type: Control Plane
# host: Running
# kubelet: Running
# apiserver: Running
# kubeconfig: Configured

⚠️ 注意:Minikube启动需要至少2核CPU、2GB内存。如果你的电脑配置较低,可以加参数限制资源:minikube start --cpus=2 --memory=2048

1.4.3 安装kubectl

kubectl是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
# 输出示例:Client Version: v1.28.3

# 配置kubectl连接Minikube
minikube update-context

# 测试连接
kubectl get nodes
# 输出示例:
# NAME       STATUS   ROLES           AGE   VERSION
# minikube   Ready    control-plane   2m    v1.28.3

1.4.4 验证环境

装完了,咱们跑个简单的测试,确保一切正常。

# 1. 测试Docker
docker run hello-world
# 看到 "Hello from Docker!" 就对了

# 2. 测试Minikube
minikube dashboard
# 会自动打开浏览器,显示K8s Dashboard

# 3. 测试kubectl
kubectl get pods -A
# 应该能看到kube-system命名空间下的系统Pod

✅ 环境检查清单:

  • Docker版本 ≥ 20.10
  • Minikube版本 ≥ 1.30
  • kubectl版本 ≥ 1.25
  • Minikube状态为Running
  • kubectl能正常连接集群

嗯,到这里,咱们的环境就搭好了。说实话,这一步虽然简单,但很多人会卡在权限、网络等问题上。如果你遇到报错,别慌——先检查Docker是否正常运行,再确认Minikube的驱动是否正确。

我个人习惯把这三个工具的版本号记下来,方便后面排查问题。你可以用 docker version && minikube version && kubectl version --client 一次性查看。

好,环境准备就绪。下一章咱们开始真正接触vLLM,把它打包成Docker镜像。准备好了吗?


专注资料整理