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 部署 Kubernetes 容器编排 自动扩缩容 GPU调度 vLLM PagedAttention 连续批处理 OpenAI API 目标:生产级AI推理服务

这张图其实就讲了三件事:左边是K8s的能力,右边是vLLM的特性,中间是我们这门课要做的——把它们结合起来,跑出一个生产级的AI推理服务。

好了,第一章就到这里。内容不多,但都是干货。下一章我们开始动手,搭建第一个K8s集群。


专注资料整理