【Milvus】安装 Milvus:Docker、Docker Compose、Kubernetes

Milvus 提供了多种部署方式,包括 Docker(单机部署)、Docker Compose(单机多容器部署)以及 Kubernetes(分布式集群部署)。以下是对这三种安装方式的详细介绍,包括先决条件、步骤、配置文件和注意事项,帮助完成安装。


1. 先决条件

在安装 Milvus 之前,确保满足以下条件:

通用要求:

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7+)、macOS 或 Windows(需要 WSL2 支持)。
  • 硬件要求
    • 单机模式(Docker 或 Docker Compose):至少 8GB 内存、4 核 CPU、50GB 磁盘空间。
    • 分布式模式(Kubernetes):根据规模调整,建议每个节点至少 16GB 内存、8 核 CPU。
  • 网络:确保安装环境可以访问 Docker Hub 或 Milvus 的镜像源。
  • Milvus 版本:本文基于 Milvus 2.x(截至 2025 年 4 月的最新版本)。具体版本可参考 Milvus 官方文档 或 GitHub 仓库。

工具要求:

  • Docker:版本 19.03 或更高。
  • Docker Compose:版本 1.28 或更高(用于 Docker Compose 部署)。
  • kubectlKubernetes 集群:Kubernetes 版本 1.16 或更高(用于 Kubernetes 部署)。
  • Helm:版本 3.6 或更高(用于 Kubernetes 的 Helm 部署)。

检查工具版本:

# 检查 Docker
docker --version
# 检查 Docker Compose
docker-compose --version
# 检查 kubectl
kubectl version --client
# 检查 Helm
helm version

2. 安装 Milvus - Docker(单机模式)

Docker 部署是安装 Milvus 最简单的方式,适合快速测试或开发环境。Milvus 提供了一个单机镜像(milvusdb/milvus),包含所有核心组件。

步骤:

  1. 安装 Docker

    • Ubuntu:
      sudo apt update
      sudo apt install -y docker.io
      sudo systemctl start docker
      sudo systemctl enable docker
      
    • macOS:下载 Docker Desktop 并安装。
    • Windows:启用 WSL2 并安装 Docker Desktop。
  2. 拉取 Milvus 镜像

    docker pull milvusdb/milvus:latest
    
  3. 创建数据持久化目录
    Milvus 需要持久化数据、日志和配置。创建以下目录:

    mkdir -p ~/milvus/data ~/milvus/logs ~/milvus/configs
    
  4. 运行 Milvus 容器
    使用以下命令启动 Milvus 单机模式:

    docker run -d --name milvus_standalone \
      -p 19530:19530 \
      -p 9091:9091 \
      -v ~/milvus/data:/var/lib/milvus \
      -v ~/milvus/logs:/var/lib/milvus/logs \
      -v ~/milvus/configs:/var/lib/milvus/configs \
      milvusdb/milvus:latest
    
    • 端口说明
      • 19530:Milvus 的 gRPC 服务端口,用于客户端连接。
      • 9091:Milvus 的 RESTful API 和 Web 界面端口。
    • 挂载目录
      • /var/lib/milvus:存储数据。
      • /var/lib/milvus/logs:存储日志。
      • /var/lib/milvus/configs:存储配置文件。
  5. 验证安装

    • 检查容器状态:
      docker ps
      
      确保 milvus_standalone 容器处于 Up 状态。
    • 测试连接:
      使用 Milvus 的 Python SDK 验证:
      pip install pymilvus
      
      from pymilvus import MilvusClient
      client = MilvusClient(uri="http://192.168.1.110:19530")
      print(client.get_server_version())
      
      如果返回 Milvus 版本号(如 2.5.x),说明安装成功。
  6. 访问 Web 界面(可选)

    • 打开浏览器,访问 http://localhost:9091
    • 如果 Milvus 包含 Web 界面(如 Attu 工具),可用于可视化管理。

注意事项:

  • 资源分配:确保 Docker 有足够的内存(至少 8GB)和 CPU 资源。
  • 防火墙:确保端口 195309091 未被防火墙阻止。
  • 持久化:不使用挂载目录会导致容器删除后数据丢失。
  • 版本选择:使用 milvusdb/milvus:<tag> 指定版本(如 milvusdb/milvus:v2.4.0)。

3. 安装 Milvus - Docker Compose(单机多容器)

Docker Compose 部署将 Milvus 的组件(协调服务、查询节点、数据节点等)拆分为多个容器,模拟分布式架构,适合需要更高性能的单机环境或开发测试。

步骤:

  1. 安装 Docker Compose

    • Ubuntu:
      sudo apt install -y docker-compose
      
    • macOS/Windows:Docker Desktop 已包含 Docker Compose。
  2. 下载 Milvus 的 Docker Compose 配置文件

    • 从 Milvus GitHub 仓库或官方文档获取 docker-compose.yml 文件:
      wget https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
      
      或者手动创建以下 docker-compose.yml 文件:
      version: '3.8'
      services:
        etcd:
          container_name: milvus_etcd
          image: quay.io/coreos/etcd:v3.5.0
          environment:
            - ETCD_AUTO_COMPACTION_MODE=revision
            - ETCD_AUTO_COMPACTION_RETENTION=1000
            - ETCD_QUOTA_BACKEND_BYTES=4294967296
          volumes:
            - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
          command: etcd -advertise-client-urls=http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir=/etcd
      
        minio:
          container_name: milvus_minio
          image: minio/minio:RELEASE.2023-03-20T20-16-18Z
          environment:
            MINIO_ACCESS_KEY: minioadmin
            MINIO_SECRET_KEY: minioadmin
          volumes:
            - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
          command: minio server /minio_data --console-address ":9001"
          healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
            interval: 30s
            timeout: 20s
            retries: 3
      
        standalone:
          container_name: milvus_standalone
          image: milvusdb/milvus:v2.4.0
          command: ["milvus", "run", "standalone"]
          environment:
            ETCD_ENDPOINTS: milvus_etcd:2379
            MINIO_ADDRESS: milvus_minio:9000
          volumes:
            - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
          ports:
            - "19530:19530"
            - "9091:9091"
          depends_on:
            - etcd
            - minio
      
      networks:
        default:
          name: milvus
      
  3. 创建持久化目录

    mkdir -p volumes/etcd volumes/minio volumes/milvus
    
  4. 启动 Milvus
    在包含 docker-compose.yml 的目录下运行:

    docker-compose up -d
    
  5. 验证安装

    • 检查容器状态:
      docker-compose ps
      
      确保 milvus_standalonemilvus_etcdmilvus_minio 容器均运行正常。
    • 使用 Python SDK 测试连接(同 Docker 方式):
      from milvus import MilvusClient
      client = MilvusClient(uri="http://localhost:19530")
      print(client.get_version())
      
  6. 访问 MinIO(可选)

    • MinIO 提供对象存储,访问 http://localhost:9001,使用默认凭据(minioadmin:minioadmin)登录。

注意事项:

  • 依赖服务:Docker Compose 部署需要 etcd(元数据存储)和 MinIO(对象存储)。
  • 存储配置:确保 volumes 目录有足够磁盘空间。
  • 环境变量:可通过修改 docker-compose.yml 中的环境变量调整配置(如 MinIO 凭据)。
  • 版本一致性:确保 milvusetcdminio 镜像版本兼容。

4. 安装 Milvus - Kubernetes(分布式集群)

Kubernetes 部署适合生产环境或需要高可用性和可扩展性的场景。Milvus 提供 Helm Chart 来简化 Kubernetes 部署。

步骤:

  1. 准备 Kubernetes 集群

    • 本地测试:使用 Minikube 或 Kind 创建本地集群。
      minikube start --cpus 4 --memory 8192
      
    • 生产环境:使用云服务(如 AWS EKS、Google GKE、Azure AKS)或自建集群。
    • 确保集群有足够的资源(建议每个节点 16GB 内存、8 核 CPU)。
  2. 安装 kubectl 和 Helm

    • kubectl:
      curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
      chmod +x kubectl
      sudo mv kubectl /usr/local/bin/
      
    • Helm:
      curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
      
  3. 添加 Milvus Helm 仓库

    helm repo add milvus https://milvus-io.github.io/milvus-helm-charts/
    helm repo update
    
  4. 创建自定义值文件
    创建 values.yaml 文件,调整 Milvus 配置。例如:

    cluster:
      enabled: true
    etcd:
      replicaCount: 3
    minio:
      mode: distributed
      replicas: 4
    milvus:
      standalone:
        enabled: false
      proxy:
        replicas: 2
      querynode:
        replicas: 4
      datanode:
        replicas: 2
    resources:
      limits:
        cpu: "4"
        memory: "16Gi"
      requests:
        cpu: "2"
        memory: "8Gi"
    persistence:
      enabled: true
      storageClass: "standard"
      size: 50Gi
    
    • 说明
      • cluster.enabled: true:启用分布式模式。
      • etcd.replicaCount:etcd 副本数,确保高可用。
      • minio.mode: distributed:启用 MinIO 分布式存储。
      • resources:为每个组件分配 CPU 和内存。
      • persistence:启用持久化存储。
  5. 部署 Milvus

    helm install my-milvus milvus/milvus -f values.yaml
    
  6. 验证安装

    • 检查 Pod 状态:
      kubectl get pods
      
      确保所有 Milvus 相关 Pod(my-milvus-proxymy-milvus-querynode 等)处于 Running 状态。
    • 获取服务地址:
      kubectl get svc
      
      查找 my-milvus 服务的 ClusterIP 或 LoadBalancer IP。
    • 测试连接:
      from milvus import MilvusClient
      client = MilvusClient(uri="http://<service-ip>:19530")
      print(client.get_version())
      
  7. 暴露服务(可选)

    • 本地测试:使用端口转发:
      kubectl port-forward svc/my-milvus 19530:19530
      
    • 生产环境:配置 LoadBalancer 或 Ingress 暴露服务。

注意事项:

  • 存储类:确保 Kubernetes 集群有可用的 StorageClass(如 standard)。
  • 资源规划:根据数据规模调整副本数和资源分配。
  • 高可用性:生产环境建议部署多个 etcd 和 MinIO 副本。
  • 网络策略:配置 Kubernetes 网络策略以确保组件间通信。
  • Helm 升级:使用 helm upgrade 更新 Milvus 配置。

5. 常见问题与故障排查

  • 容器启动失败
    • 检查日志:docker logs <container_name>kubectl logs <pod_name>
    • 确认端口未被占用、磁盘空间充足。
  • 连接失败
    • 确保客户端连接的 IP 和端口正确。
    • 检查防火墙或 Kubernetes 网络策略。
  • 性能问题
    • 调整索引参数或增加查询节点副本。
    • 确保硬件资源足够。
  • 数据丢失
    • 确保持久化存储正确配置(如挂载目录或 PVC)。

6. 总结

  • Docker:适合快速测试,单容器部署最简单。
  • Docker Compose:适合开发环境,模拟分布式架构。
  • Kubernetes:适合生产环境,支持高可用和分布式部署。
### 使用 Docker 安装 Milvus 的详细步骤 #### 验证环境 在开始之前,需确认已正确安装并配置好 DockerDocker Compose 工具。可以通过运行以下命令来验证版本信息: ```bash docker --version && docker compose version ``` 如果系统中安装的是 Docker Compose V2,则应使用 `docker compose` 命令而非旧版的 `docker-compose`[^2]。 --- #### 下载 Milvus 配置文件 Milvus 提供了一个 YAML 文件用于定义容器服务及其依赖项。可以按照以下方式获取该文件: 1. **访问官方文档页面** 访问 Milvus 官方网站或 GitHub 仓库,找到适合当前需求的 `docker-compose.yml` 文件链接[^3]。 2. **保存到本地目录** 将下载好的 `docker-compose.yml` 文件放置在一个新创建的工作目录下,例如 `/path/to/milvus/`。 --- #### 启动 Milvus 服务 进入包含 `docker-compose.yml` 文件的工作目录后,执行以下命令启动 Milvus 及其相关组件(如 etcd、minio 等): ```bash docker compose up -d ``` 此操作将以后台模式运行所有必要的容器,并显示类似如下日志消息: ``` Creating milvus-etcd ... done Creating milvus-minio ... done Creating milvus-standalone ... done Creating attu ... done ``` 上述输出表明各子服务均已成功部署完成。 --- #### 验证安装状态 为了确保 Milvus 正常工作,可尝试连接至实例进行测试。具体方法包括但不限于: - 运行客户端 SDK 脚本; - 利用 RESTful API 或 gRPC 接口发送请求; - 查看容器内部健康状况报告。 可通过以下指令查看正在运行中的容器列表以及对应端口号分配情况: ```bash docker ps ``` 同时也可以检查特定服务的日志记录以便排查潜在错误原因: ```bash docker logs <container_name> ``` --- #### 关闭与清理资源 当不再需要这些服务时,记得停止它们并将数据卷删除以释放磁盘空间: ```bash docker compose down --volumes ``` 这一步骤会优雅地终止所有关联进程并移除持久化存储部分。 --- ### 注意事项 - 如果遇到权限不足的问题,请考虑添加 sudo 权限或者调整用户组设置。 - 对于生产环境中大规模集群场景下的部署方案设计,请参考更高级别的架构指南材料。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值