01
项目背景与架构设计
为什么需要K8s持久化存储vLLM?整体架构图与组件说明。
架构设计
02
环境准备
部署Kubernetes集群(kubeadm/minikube)、安装Helm、配置kubectl。
集群Helm
03
存储基础
PV与PVC概念、StorageClass动态供给、访问模式(ReadWriteOnce/ReadWriteMany)。
PV/PVCStorageClass
04
NFS服务搭建
在Linux上部署NFS Server、配置exports、防火墙与权限设置。
NFSLinux
05
NFS CSI驱动安装
使用Helm部署NFS CSI Driver、验证驱动状态。
CSIHelm
06
创建StorageClass
定义NFS CSI的StorageClass、设置回收策略与挂载参数。
StorageClassNFS
07
vLLM模型准备
下载开源模型(如Qwen2-7B)、模型文件结构说明、模型大小评估。
模型Qwen
08
手动创建PV与PVC
静态供给方式、YAML定义、绑定与验证。
静态供给YAML
09
动态供给PVC
通过StorageClass自动创建PV、设置大小与访问模式。
动态供给自动
10
部署vLLM服务(无存储)
基础Deployment YAML、Service暴露、测试推理接口。
Deployment推理
11
挂载PVC到vLLM Pod
volume与volumeMounts配置、模型加载路径设置。
挂载volume
12
模型预热与首次加载
启动日志分析、模型加载时间优化、内存与显存监控。
预热监控
13
多副本部署与共享存储
ReadWriteMany模式、Deployment副本数扩展、负载均衡测试。
多副本RWX
14
StatefulSet与有状态服务
为什么用StatefulSet?ordinal索引与稳定网络标识。
StatefulSet有状态
15
模型版本管理
多版本模型目录结构、通过环境变量切换模型版本。
版本Env
16
ConfigMap与Secret管理
存储模型配置参数、API密钥、数据库连接信息。
ConfigMapSecret
17
InitContainer初始化模型
使用InitContainer下载或校验模型文件。
Init初始化
18
Sidecar模式
日志收集、监控代理与vLLM主容器协同工作。
Sidecar日志
19
HPA自动扩缩容
基于CPU/GPU利用率的Pod自动伸缩、自定义指标扩展。
HPA自动伸缩
20
持久化日志
使用PVC存储vLLM访问日志、日志轮转与清理策略。
日志轮转
21
备份与恢复
模型文件定期备份到对象存储(MinIO)、恢复流程。
备份MinIO
22
监控与告警
Prometheus+Grafana监控vLLM指标、存储使用率告警。
监控告警
23
GPU调度与资源隔离
NVIDIA GPU Operator、节点选择器、资源限制。
GPU调度
24
网络策略与安全
NetworkPolicy限制Pod间通信、Pod安全上下文。
安全NetworkPolicy
25
滚动更新与回滚
Deployment更新策略、模型热加载、回滚操作。
更新回滚
26
性能调优
存储IOPS优化、内核参数调整、vLLM批处理大小设置。
调优IOPS
27
故障排查
Pod CrashLoopBackOff、PVC挂载失败、模型加载超时。
排查CrashLoop
28
成本优化
选择合适的存储类型、预留资源与按需资源混合使用。
成本预留
29
生产环境最佳实践
多可用区部署、灾备方案、SLA保障。
生产灾备
30
项目总结与展望
完整架构回顾、未来演进方向(如KubeVirt、Serverless)。
总结展望