Kubernetes 部署
此页面内容来自 DeepWiki 重组后的对应页面(来源:8-2.zh.md)
Kubernetes / Helm 部署
相关源文件
本章引用的主要源码文件:
k8s-deploy/databases/00-config.shk8s-deploy/databases/01-prepare.shk8s-deploy/databases/02-install-database.shk8s-deploy/databases/03-uninstall-database.shk8s-deploy/databases/04-cleanup.shk8s-deploy/databases/install-kubeblocks.shk8s-deploy/databases/scripts/common.shk8s-deploy/databases/uninstall-kubeblocks.shk8s-deploy/install_lightrag.shk8s-deploy/install_lightrag_dev.shk8s-deploy/lightrag/Chart.yamlk8s-deploy/lightrag/templates/deployment.yamlk8s-deploy/lightrag/values.yamlk8s-deploy/uninstall_lightrag.shk8s-deploy/uninstall_lightrag_dev.sh
LightRAG 提供了一套完整的 Kubernetes 部署方案,可从本地开发环境扩展到生产级集群。该部署通过 Helm Chart 和自动化脚本进行管理,并与 KubeBlocks 数据库操作器集成,以提供高可用的存储后端。
部署模式
LightRAG 在 Kubernetes 中支持两种主要部署策略:轻量级(开发) 和 生产级。
1. 轻量级部署
此模式适用于测试或小规模使用场景。它使用基于文件的本地存储,无需外部数据库集群。
- 存储后端:
JsonKVStorage、NanoVectorDBStorage、NetworkXStorage和JsonDocStatusStoragek8s-deploy/install_lightrag_dev.sh:56-59。 - 持久化:使用
emptyDir或标准持久卷声明(PVC)来存储.json和.graphml文件k8s-deploy/lightrag/templates/deployment.yaml:66-78。
2. 生产级部署
此模式利用专用数据库引擎来实现可扩展性和高性能。
- 存储后端:
PGKVStorage、PGVectorStorage、Neo4JStorage和PGDocStatusStoragek8s-deploy/lightrag/values.yaml:63-68。 - 数据库编排:使用 KubeBlocks 管理 PostgreSQL(含
pgvector)和 Neo4j 集群k8s-deploy/install_lightrag.sh:24-27。
部署流程示意图
下图展示了高层级部署脚本与其管理的具体 Helm 和 Kubernetes 实体之间的关系。
"K8s 部署编排"
来源:k8s-deploy/install_lightrag.sh:23-80、k8s-deploy/install_lightrag_dev.sh:54-67、k8s-deploy/lightrag/values.yaml:50-83、k8s-deploy/databases/01-prepare.sh:10-30
Helm Chart 配置
位于 k8s-deploy/lightrag 目录下的 Helm Chart k8s-deploy/lightrag/Chart.yaml:1-5 将应用程序参数化,以适应 Kubernetes 环境。
资源和持久化设置
部署默认使用单个副本,以避免使用基于文件的存储时出现文件锁定冲突 k8s-deploy/lightrag/values.yaml:1-21。
| 参数 | 默认值 | 描述 |
|---|---|---|
replicaCount | 1 | Pod 副本数量。 |
updateStrategy | Recreate | 更新策略,确保旧 Pod 在新 Pod 启动前释放存储 k8s-deploy/lightrag/values.yaml:21-22。 |
resources.limits.memory | 2Gi | LightRAG 容器的内存限制 k8s-deploy/lightrag/values.yaml:31。 |
persistence.ragStorage.size | 10Gi | 知识图谱和向量数据的存储卷大小 k8s-deploy/lightrag/values.yaml:39。 |
环境变量映射
deployment.yaml 模板将 Values.env 直接映射到容器的环境变量中,从而允许在运行时配置大语言模型(LLM)提供商和存储后端 k8s-deploy/lightrag/templates/deployment.yaml:43-57。同时,它还会挂载一个基于 Secret 的 .env 文件到 /app/.env k8s-deploy/lightrag/templates/deployment.yaml:44-45。
来源:k8s-deploy/lightrag/values.yaml:1-42、k8s-deploy/lightrag/templates/deployment.yaml:19-45
数据库集成(KubeBlocks)
对于生产环境,LightRAG 使用 KubeBlocks 在集群内配置托管的数据库服务。
配置工作流
- 准备阶段:
01-prepare.sh安装 KubeBlocks 操作器及必要的自定义资源定义(CRD),如Snapshotterk8s-deploy/databases/install-kubeblocks.sh:12-43。 - 附加组件安装:安装 PostgreSQL、Neo4j、Redis 和 Qdrant 的 KubeBlocks 附加组件
k8s-deploy/databases/01-prepare.sh:24-30。 - 集群部署:
02-install-database.sh触发实际数据库实例的创建(例如pg-cluster、neo4j-cluster)k8s-deploy/databases/02-install-database.sh:12-17。 - 向量支持:
install_lightrag.sh脚本会等待 PostgreSQL 主 Pod 就绪,然后执行CREATE EXTENSION vector;以启用pgvector支持k8s-deploy/install_lightrag.sh:30-37。
密钥管理
数据库的凭证由 KubeBlocks 自动生成,部署脚本通过 kubectl get secrets 获取这些凭证,并将其作为环境变量传递给 Helm 发布 k8s-deploy/install_lightrag.sh:40-60。
数据库/代码关联
此图展示了 values.yaml 中的 Kubernetes 服务名称如何映射到 LightRAG 引擎内部的存储类。
"K8s 服务到代码存储的映射"
来源:k8s-deploy/lightrag/values.yaml:63-79、k8s-deploy/install_lightrag.sh:70-82
安装与卸载
安装脚本
- 生产环境:
bash k8s-deploy/install_lightrag.sh- 需要设置
OPENAI_API_KEY环境变量k8s-deploy/install_lightrag.sh:7-15。 - 部署完整的数据库栈和
lightragHelm 发布。
- 需要设置
- 开发环境:
bash k8s-deploy/install_lightrag_dev.sh- 仅使用轻量级本地存储部署
lightrag-dev发布k8s-deploy/install_lightrag_dev.sh:54-67。
- 仅使用轻量级本地存储部署
卸载脚本
- 仅卸载应用:
uninstall_lightrag.sh或uninstall_lightrag_dev.sh会移除 Helm 发布,但保留数据库k8s-deploy/uninstall_lightrag.sh:1-5。 - 完全清理:
databases/uninstall-kubeblocks.sh会移除 KubeBlocks 操作器、CRD 以及所有关联的数据库命名空间k8s-deploy/databases/uninstall-kubeblocks.sh:26-48。
来源:k8s-deploy/install_lightrag.sh:1-96、k8s-deploy/install_lightrag_dev.sh:1-82、k8s-deploy/databases/uninstall-kubeblocks.sh:1-52