首页
/ Lucida项目基于Kubernetes的部署指南

Lucida项目基于Kubernetes的部署指南

2025-07-08 05:11:42作者:魏献源Searcher

Lucida是一个开源的人工智能问答系统,本文将详细介绍如何使用Kubernetes在单机环境下部署Lucida系统。

系统要求

在开始部署前,请确保您的环境满足以下要求:

  1. 硬件要求

    • 至少18GB的可用磁盘空间
    • 至少7GB的可用内存
    • 8080端口未被占用
  2. 软件要求

    • 已安装Docker
    • 如果是在Mac OS X上部署,需要安装Virtualbox或VMWare Fusion
    • 确保Docker可以拉取18GB大小的镜像

部署步骤详解

1. 创建Kubernetes集群

运行对应操作系统的集群启动脚本:

sudo ./cluster_up_<your_os>.sh

这个脚本会在单机上通过Docker创建一个Kubernetes集群。如果需要多机集群,请参考Kubernetes官方文档。

2. 配置文件修改

需要修改以下配置文件:

  1. 数据存储路径配置

    • 打开mongo-controller.yamlqa-controller.yaml
    • 修改hostPath字段,指向您希望存储MongoDB和OpenEphyra数据的目录
    • 确保对这些目录有写权限
  2. 知识库配置

    • 如果使用Wikipedia作为额外知识库,按照qa-controller.yaml中的注释将其移动到指定目录
    • 否则,从args字段中移除export wiki_indri_index=...这一行
  3. 副本数量调整

    • 根据需要修改*-controller中的副本数量

3. 自定义Docker镜像(可选)

如果您希望从源码构建Docker镜像而非使用预构建镜像:

  1. 修改所有*-controller中的image字段
  2. 设置本地Kubernetes容器注册表

4. HTTPS配置(可选)

如果您有letsencrypt生成的SSL证书并希望配置HTTPS:

  1. 根据内联注释修改以下文件:

    web-controller-https.yaml
    asrmaster-controller-https.yaml
    
  2. 重命名以下文件:

    mv asrworker-controller-https.yaml asrworker-controller.yaml
    mv asrmaster-controller-https.yaml asrmaster-controller.yaml
    mv web-controller-https.yaml web-controller.yaml
    mv web-service-https.yaml web-service.yaml
    

5. 启动服务

运行以下命令启动所有Kubernetes服务和Pod:

sudo ./start_services.sh

注意:

  • 拉取镜像可能需要较长时间
  • 如果设备空间不足,可能会看到ImagePullBackOff错误状态

6. 访问系统

在浏览器中访问:

  • HTTP: http://localhost:30000
  • HTTPS(如配置): https://<YOUR_DOMAIN_NAME>:30000

Apache服务器可能需要几分钟才能正常工作。如果页面长时间无法加载,请参考下一节的调试方法。

调试技巧

如果遇到问题,可以使用以下命令进行调试:

  1. 检查服务和Pod状态:

    kubectl get service|pod
    
  2. 查看Pod详细信息:

    kubectl describe pod <pod_name>
    
  3. 进入运行中的容器:

    docker ps | grep <controller_name>
    docker exec -it <running_container_id> bash
    

常见问题解决方案:

  • 看到"Internal Server Error":检查web容器中的日志文件/usr/local/lucida/lucida/commandcenter/apache/logs/
  • MongoDB容器无法启动:检查27017端口是否被占用
    sudo netstat -tulpn | grep 27017
    
    并终止占用该端口的进程

集群销毁

要销毁集群,可以使用以下步骤:

  1. 查看所有Docker容器:

    docker ps
    
  2. 停止并删除所有Kubernetes相关容器

也可以使用以下便捷函数:

function docker-flush(){
  dockerlist=$(docker ps -a -q)
    if [ "${dockerlist}" != "" ]; then
      for d in ${dockerlist}; do
        echo "***** ${d}"
        docker stop ${d} 2>&1 > /dev/null
        docker rm ${d} 2>&1 > /dev/null
        done
      fi
}

总结

本文详细介绍了Lucida项目在Kubernetes环境下的部署流程,包括系统要求、部署步骤、配置修改、HTTPS设置以及常见问题的调试方法。通过遵循这些步骤,您应该能够成功部署并运行Lucida系统。如果在部署过程中遇到任何问题,可以参考调试部分的内容进行排查。