【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 Compose 安装 Milvus 和 Attu 要通过 Docker Compose 安装 Milvus 和 Attu,可以按照以下方法操作: #### 下载配置文件 首先需要下载适用于特定版本的 `docker-compose.yml` 文件。此文件定义了容器和服务的设置。 ```bash wget https://github.com/milvus-io/milvus/releases/download/v2.5.0-beta/milvus-standalone-docker-compose.yml -O docker-compose.yml ``` 上述命令会将官方发布的单机版 MilvusDocker 配置文件保存为当前目录下的 `docker-compose.yml`[^1]。 #### 启动 Milvus 单机服务 在与 `docker-compose.yml` 文件相同的目录下执行以下命令来启动 Milvus 服务: ```bash sudo docker-compose up -d ``` 这一步将会基于配置文件中的定义创建并运行多个容器,包括核心的 Milvus 服务以及其依赖组件(如 etcd 或 minio)。如果一切正常,您应该看到类似以下的日志输出表示成功完成初始化过程[^2]: ``` Creating milvus-etcd ... done Creating milvus-minio ... done Creating milvus-standalone ... done ``` #### 运行自定义组合命令 (可选) 如果您希望更明确地指定使用的 YAML 文件路径,则可以通过 `-f` 参数手动指明目标文件位置: ```bash docker-compose -f milvus-standalone-docker-compose.yml up -d ``` 这种方式特别适合当工作目录中有多个不同用途的 compose 文件时使用[^3]。 #### 添加 Attu 支持 目前官方文档并未提供直接集成 Attu 到同一个 `docker-compose.yml` 中的方法;但是用户可以选择单独部署或者利用其他方式实现两者之间的交互访问。通常情况下,只需确保网络可达性和端口映射正确无误即可满足基本需求。 对于具体步骤而言,可能涉及额外拉取镜像、调整环境变量等内容,建议参考最新版本说明获取最精确指导信息。 --- ### 注意事项 - 确认本地已安装Docker Engine 和 Docker Compose 工具链。 - 如果遇到权限错误,请尝试赋予脚本适当读写权利或切换至管理员模式重试。 - 不同操作系统平台间可能存在细微差异,请参照对应发行指南处理特殊场景问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彬彬侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值