1. K8s与vLLM初识:什么是Kubernetes、什么是vLLM、为什么用K8s部署vLLM、课程目标与前置知识
1.1 什么是Kubernetes?
Kubernetes,简称K8s,说白了就是一个容器编排平台。
我刚开始接触它的时候,也觉得这玩意儿挺玄乎的。但用久了你会发现,它的核心能力就三件事:部署、扩展、管理容器化应用。
你想想看,如果你有几十个AI模型要同时跑,每个模型还要分配不同的GPU资源,手动搞?那不得累死。K8s就是帮你自动搞定这些脏活累活的。
我个人习惯把K8s理解成一个「智能管家」:
- 你告诉它「我要跑一个vLLM服务,需要2张A100」
- 它会自动找一台有空闲GPU的机器
- 如果服务挂了,它会自动重启
- 如果流量大了,它会自动加副本
嗯,就是这么个东西。
核心概念速览:
- Pod:最小的部署单元,里面跑容器
- Deployment:管理Pod的声明式更新
- Service:提供稳定的网络访问入口
- Node:集群中的一台机器
1.2 什么是vLLM?
vLLM是一个高性能的大语言模型推理引擎。说白了,就是让LLM跑得更快、更省显存。
我记得第一次在单机上跑LLaMA-13B,显存直接爆了。后来用了vLLM,同样的模型,同样的硬件,吞吐量提升了将近3倍。为什么?因为它用了PagedAttention技术,把显存管理得像操作系统管理内存一样高效。
vLLM的几个关键特性:
- PagedAttention:解决显存碎片化问题
- 连续批处理:动态拼接请求,提高GPU利用率
- 支持多种模型:LLaMA、Mistral、Qwen等主流模型都支持
- OpenAI兼容API:可以直接用openai库调用
小提示:vLLM不是训练框架,是推理引擎。你训练好的模型,用它来提供服务。
1.3 为什么用K8s部署vLLM?
这个问题我经常被问到。直接说结论:单机跑vLLM很简单,但生产环境必须上K8s。
我在项目中遇到过这样的情况:一个客户用docker跑vLLM,刚开始还好。后来模型更新了,流量翻倍了,GPU坏了,人就慌了。手动迁移、手动扩容、手动回滚……折腾了一整夜。
用K8s部署vLLM的好处:
| 场景 | 裸机/Docker | K8s |
|---|---|---|
| GPU故障 | 手动迁移,服务中断 | 自动调度到健康节点 |
| 流量暴增 | 手动加机器,配置复杂 | HPA自动扩容 |
| 模型更新 | 停服更新,有风险 | 滚动更新,零停机 |
| 资源利用率 | 容易碎片化 | 智能调度,高效利用 |
说白了,K8s帮你把「运维的苦活」变成了「配置的轻松活」。
1.4 课程目标
这门课的目标很明确:让你从零开始,亲手把一个vLLM服务部署到K8s集群上,并且能跑起来。
具体来说,学完这门课你能做到:
- 搭建一个可用的K8s集群(别怕,我们用简单的方式)
- 在集群上部署vLLM推理服务
- 配置GPU资源调度
- 实现服务的自动扩缩容
- 处理常见的部署坑
注意:这门课不是K8s大全,也不是vLLM源码解析。我们聚焦在「部署」这件事上,把最常用的路径走通。
1.5 前置知识
嗯,这里要诚实一点。虽然说是小白入门,但有些基础你得有:
- Docker基础:知道怎么build镜像、run容器就行
- Linux基础:会敲命令、会看日志
- Python基础:能看懂简单的Python脚本
- GPU概念:知道什么是CUDA、什么是显存
如果你完全没接触过容器技术,我建议先花半小时看看Docker的入门教程。不然直接上K8s可能会有点懵。
我的建议:准备一台带GPU的Linux机器(或者云服务器),Ubuntu 22.04最佳。这样跟着操作,效果最好。
1.6 知识体系总览
下面这张图,是我自己梳理的本章知识结构。你看一眼,心里就有数了。
这张图其实就讲了三件事:左边是K8s的能力,右边是vLLM的特性,中间是我们这门课要做的——把它们结合起来,跑出一个生产级的AI推理服务。
好了,第一章就到这里。内容不多,但都是干货。下一章我们开始动手,搭建第一个K8s集群。