RAGFlow v0.24.0 Kubernetes 部署完整教程

RAGFlow v0.24.0 Kubernetes 部署完整教程 RAGFlow v0.24.0 Kubernetes 部署完整教程基于 OceanBase 的 RAG 全栈部署方案,适用于信创环境目录一、架构概览二、前置条件三、镜像准备四、部署 OceanBase 数据库五、部署 MinIO 对象存储六、配置 RAGFlow七、部署 RAGFlow 主服务八、配置外部访问九、部署验证十、踩坑记录与注意事项十一、生产优化建议一、架构概览┌─────────────────────────────────────────────────────────┐ │ Kubernetes Cluster │ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ RAGFlow │ │ OceanBase │ │ MinIO │ │ │ │ Deployment │ │ StatefulSet │ │ StatefulSet │ │ │ │ │ │ │ │ │ │ │ │ - Web UI │ │ - 关系数据库 │ │ - 文件存储 │ │ │ │ - API Server│ │ - 向量引擎 │ │ - S3 兼容 │ │ │ │ - Task Exec │ │ - MySQL 协议 │ │ │ │ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │ │ │ │ │ │ └──────────────────┼───────────────────┘ │ │ │ │ │ ┌───────┴───────┐ │ │ │ Redis │ │ │ │ (外部/集群内) │ │ │ └───────────────┘ │ └─────────────────────────────────────────────────────────┘组件说明组件版本角色部署方式RAGFlowv0.24.0RAG 应用主服务DeploymentOceanBase CE4.x关系数据库 + 向量引擎StatefulSetMinIORELEASE.2025-06对象存储(文档文件)StatefulSetRedis/Valkey7.x缓存 + 任务队列外部服务为什么选择 OceanBase?RAGFlow 支持三种数据库后端:MySQL、PostgreSQL、OceanBase。在信创环境下:OceanBase CE是蚂蚁集团开源的分布式数据库,采用 MulanPubL-2.0 许可证完全兼容 MySQL 协议,RAGFlow 原生支持同时提供向量存储能力(VECTOR数据类型 + 向量索引),可替代 Elasticsearch/Infinity一个数据库同时承担关系存储和向量检索,简化架构二、前置条件2.1 集群要求Kubernetes 1.24+至少 16 CPU / 32GB 内存可用支持动态 PV 的 StorageClass集群内已部署 Redis(或 Valkey)2.2 资源规划组件CPU 请求/限制内存 请求/限制存储RAGFlow4C / 8C8Gi / 8Gi无(无状态)OceanBase4C / 8C8Gi / 16Gi100Gi PVCMinIO2C / 4C4Gi / 4Gi50Gi PVC2.3 命名空间kubectl create namespace ragflow以下示例统一使用ragflow命名空间,请根据实际情况替换。三、镜像准备3.1 所需镜像# RAGFlow 主服务dockerpull infiniflow/ragflow:v0.24.0# OceanBase CEdockerpull oceanbase/oceanbase-ce:latest# MinIO(注意选择与集群架构匹配的版本)dockerpull minio/minio:RELEASE.2025-06-13T11-33-47Z3.2 推送到私有 Registry(可选)如果集群无法直接拉取公网镜像,需要推送到内部 Registry:# 登录私有 Registrydockerloginyour-registry-uusername-ppassword# 重新打标签并推送dockertag infiniflow/ragflow:v0.24.0your-registry/ragflow:v0.24.0dockerpushyour-registry/ragflow:v0.24.0dockertag oceanbase/oceanbase-ce:latestyour-registry/oceanbase-ce:latestdockerpushyour-registry/oceanbase-ce:latestdockertag minio/minio:RELEASE.2025-06-13T11-33-47Zyour-registry/minio:RELEASE.2025-06-13T11-33-47Zdockerpushyour-registry/minio:RELEASE.2025-06-13T11-33-47Z3.3 创建 imagePullSecret(使用私有 Registry 时)kubectl create secret docker-registry registry-secret\--docker-server=your-registry\--docker-username=username\--docker-password=password\-nragflow⚠️ARM64 Mac 用户注意:如果在 Apple Silicon Mac 上拉取镜像,默认会拉取 ARM64 版本。部署到 x86_64 集群时需要指定平台:dockerpull--platformlinux/amd64 minio/minio:RELEASE.2025-06-13T11-33-47Z四、部署 OceanBase 数据库4.1 创建 StatefulSet# ragflow-oceanbase-statefulset.ymlapiVersion:apps/v1kind:StatefulSetmetadata:name:ragflow-oceanbasenamespace:ragflowspec:serviceName:ragflow-oceanbasereplicas:1selector:matchLabels:app:ragflow-oceanbasetemplate:metadata:labels:app:ragflow-oceanbasespec:containers:-name:oceanbaseimage:your-registry/oceanbase-ce:latest# 或 oceanbase/oceanbase-ce:latestimagePullPolicy:Alwaysports:-containerPort:2881name:mysql-containerPort:2882name:rpcenv:-name:TZvalue:"Asia/Shanghai"# mini 模式:单节点部署,资源占用较小-name:MODEvalue:"mini"# sys 租户 root 密码-name:OB_ROOT_PASSWORDvalue:"your-ob-root-password"# 业务租户名称-name:OB_TENANT_NAMEvalue:"ragflow"# 业务租户 root 密码-name:OB_TENANT_PASSWORDvalue:"your-ob-tenant-password"volumeMounts:-name:datamountPath:/root/obresources:requests:cpu:"4"memory:"8Gi"limits:cpu:"8"memory:"16Gi"# OceanBase 首次启动需要 2-5 分钟初始化readinessProbe:tcpSocket:port:2881initialDelaySeconds:120periodSeconds:15failureThreshold:20livenessProbe:tcpSocket:port:2881initialDelaySeconds:180periodSeconds:30failu