01
项目背景与目标
理解多租户场景下vLLM服务隔离的必要性,明确课程最终目标——在K8s中通过Namespace隔离部署多个vLLM推理服务。
隔离必要性课程目标
02
K8s核心概念回顾
快速回顾Pod、Deployment、Service、Ingress、ConfigMap、Secret等核心资源,为后续实战打基础。
PodDeploymentService
03
Namespace深度解析
Namespace的作用、查看、创建、删除,以及资源配额(ResourceQuota)和限制范围(LimitRange)的基本概念。
ResourceQuotaLimitRange
04
vLLM服务简介
vLLM是什么?核心优势(PagedAttention、高吞吐)、部署方式(Docker、K8s),以及为什么需要隔离。
PagedAttention高吞吐
05
环境准备
准备K8s集群(Minikube/Kind/云厂商)、安装kubectl、配置kubeconfig、验证集群状态。
Minikubekubectl
06
Docker镜像准备
拉取vLLM官方镜像,或基于vLLM构建自定义镜像(包含模型下载脚本),推送到私有仓库。
Dockerfile私有仓库
07
模型管理策略
讨论模型存储方案(本地PV、NFS、对象存储),以及如何在K8s中挂载模型文件。
PVNFS挂载
08
第一个Namespace
创建名为‘team-a’的Namespace,并为其设置ResourceQuota(CPU/内存限制)和LimitRange(默认资源请求)。
team-aResourceQuota
09
部署vLLM到team-a
编写Deployment YAML,配置vLLM启动参数(模型路径、端口、GPU数量),部署到team-a命名空间。
DeploymentGPU
10
Service与Ingress配置
为team-a的vLLM服务创建ClusterIP Service和Ingress,实现集群内和集群外访问。
ClusterIPIngress
11
验证team-a服务
使用curl或Python客户端调用vLLM的API(/v1/completions),确认服务正常响应。
curlAPI测试
12
第二个Namespace
创建‘team-b’命名空间,配置不同的ResourceQuota(例如限制GPU数量),模拟资源竞争场景。
team-bGPU限制
13
部署vLLM到team-b
复用或修改Deployment YAML,部署另一个模型(如不同参数量级)到team-b,注意端口不冲突。
多模型端口隔离
14
网络隔离验证
演示同一Namespace内Pod互通,跨Namespace通过Service名称访问,以及NetworkPolicy的初步概念。
NetworkPolicy跨命名空间
15
配置管理
使用ConfigMap管理vLLM的启动参数(如max-model-len、gpu-memory-utilization),实现配置与镜像解耦。
ConfigMap解耦
16
密钥管理
使用Secret管理Hugging Face Token或API Key,通过环境变量注入vLLM容器。
Secret环境变量
17
监控与日志
部署Prometheus和Grafana监控vLLM指标(请求延迟、吞吐量),使用Loki或EFK收集日志。
PrometheusGrafanaLoki
18
自动伸缩
配置HorizontalPodAutoscaler(HPA)基于CPU/内存或自定义指标(如请求数)对vLLM Pod进行自动扩缩容。
HPA自动扩缩
19
资源隔离进阶
使用NodeSelector、Taints/Tolerations将不同团队的vLLM Pod调度到不同GPU节点,实现物理隔离。
TaintsNodeSelector
20
多模型部署
在一个Namespace内部署多个vLLM实例(不同模型),通过不同的Service/Ingress路径进行路由。
多实例路由
21
灰度发布
利用K8s的Deployment滚动更新策略,或结合Argo Rollouts实现vLLM模型的蓝绿部署和金丝雀发布。
蓝绿部署金丝雀
22
成本控制
分析不同隔离方案的成本(节点成本、运维成本),讨论如何通过ResourceQuota和节点池控制成本。
成本分析节点池
23
安全性加固
Pod安全策略(PSP/Pod Security Admission)、服务账户(ServiceAccount)与RBAC权限控制。
PSPRBACServiceAccount
24
备份与恢复
定期备份vLLM的配置(YAML文件)和模型文件,演示在Namespace误删除后的恢复流程。
备份恢复
25
性能压测
使用Locust或wrk对隔离前后的vLLM服务进行压测,对比资源争抢对延迟和吞吐的影响。
Locust压测
26
故障排查
常见问题(CrashLoopBackOff、ImagePullBackOff、OOMKilled)的排查思路和kubectl命令实战。
CrashLoopBackOffOOMKilled
27
CI/CD集成
将vLLM部署流程集成到GitLab CI或GitHub Actions中,实现模型更新后自动部署。
GitLab CIGitHub Actions
28
多集群扩展
讨论当单个集群无法满足需求时,如何通过Karmada或Rancher进行多集群管理,实现Namespace级别的跨集群隔离。
KarmadaRancher
29
最佳实践总结
总结Namespace命名规范、资源配额设置建议、监控告警配置、安全基线等最佳实践。
命名规范安全基线
30
课程回顾与展望
回顾整个项目实战的关键步骤,展望vLLM与K8s结合的未来趋势(如Serverless推理、GPU池化)。
ServerlessGPU池化