第29章:部署与服务化——Docker、K8s 与模型网关

第29章:部署与服务化——Docker、K8s 与模型网关 版本:LlamaIndex 0.12.x定位:把 RAG 应用稳定运行在团队环境中源码关联:llama_index.core.indices、llama_index.core.storage、FastAPI、Docker、Kubernetes1. 项目背景某团队的 RAG 知识库服务在开发机上跑得飞起——python main.py一键启动,索引加载 8 秒,首问响应 2 秒内,PM 在 demo 会上直呼"这就是未来"。然而当运维同事把代码拉到 Linux 测试服务器上之后,画风突变:Python 依赖装了 20 分钟才装完——三个包因为 gcc 版本不兼容编译失败,手动降级才勉强跑通。服务启动后内存占用量比开发机高出 40%,QA 用 ab 压了 20 并发,服务直接 OOM 被操作系统 Kill。运维重启了一次,发现每次重启都要等索引加载 3 分钟——K8s 的健康检查早已超时,把 Pod 反复重启了 6 次。更令人崩溃的是,模型 API Key 硬编码在 Python 文件里,运维同事部署前还得手动把 Key 替换成生产环境的——“手滑改错一个字符,整个集群的 Pod 全报 401”。运营主管在群里的评价一针见血:“Demo 是颗糖,部署是堵墙。”回顾整个部署过程,RAG 服务的部署跟传统微服务有三个本质差异:(1) 体积大。一个 RAG 项目的依赖包动辄 800MB+(torc