> 技术文档 > 【Milvus】安装 Milvus:Docker、Docker Compose、Kubernetes_milvus安装

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

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 部署)。

检查工具版本:

# 检查 Dockerdocker --version# 检查 Docker Composedocker-compose --version# 检查 kubectlkubectl version --client# 检查 Helmhelm version

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

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

步骤:

  1. 安装 Docker

    • Ubuntu:
      sudo apt updatesudo apt install -y docker.iosudo systemctl start dockersudo 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 MilvusClientclient = 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: 指定版本(如 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 - minionetworks: 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 MilvusClientclient = 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 kubectlsudo 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: trueetcd: replicaCount: 3minio: mode: distributed replicas: 4milvus: standalone: enabled: false proxy: replicas: 2 querynode: replicas: 4 datanode: replicas: 2resources: 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 MilvusClientclient = MilvusClient(uri=\"http://: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 kubectl logs
    • 确认端口未被占用、磁盘空间充足。
  • 连接失败
    • 确保客户端连接的 IP 和端口正确。
    • 检查防火墙或 Kubernetes 网络策略。
  • 性能问题
    • 调整索引参数或增加查询节点副本。
    • 确保硬件资源足够。
  • 数据丢失
    • 确保持久化存储正确配置(如挂载目录或 PVC)。

6. 总结

  • Docker:适合快速测试,单容器部署最简单。
  • Docker Compose:适合开发环境,模拟分布式架构。
  • Kubernetes:适合生产环境,支持高可用和分布式部署。