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

【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
    • macOS:下载 Docker Desktop 并安装。
    • Windows:启用 WSL2 并安装 Docker Desktop。
    • 端口说明
      • 19530:Milvus 的 gRPC 服务端口,用于客户端连接。
      • 9091:Milvus 的 RESTful API 和 Web 界面端口。
    • 挂载目录
      • /var/lib/milvus:存储数据。
      • /var/lib/milvus/logs:存储日志。
      • /var/lib/milvus/configs:存储配置文件。
  2. 验证安装
  3. 访问 Web 界面(可选)
    • 打开浏览器,访问 http://localhost:9091
    • 如果 Milvus 包含 Web 界面(如 Attu 工具),可用于可视化管理。

测试连接:
使用 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),说明安装成功。

检查容器状态:

docker ps

确保 milvus_standalone 容器处于 Up 状态。

运行 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 

创建数据持久化目录
Milvus 需要持久化数据、日志和配置。创建以下目录:

mkdir -p ~/milvus/data ~/milvus/logs ~/milvus/configs 

拉取 Milvus 镜像

docker pull milvusdb/milvus:latest 

Ubuntu:

sudoapt update sudoaptinstall -y docker.io sudo systemctl start docker sudo systemctl enable docker 

注意事项:

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

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

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

步骤:

  1. 安装 Docker Compose
    • macOS/Windows:Docker Desktop 已包含 Docker Compose。
  2. 下载 Milvus 的 Docker Compose 配置文件
  3. 验证安装
  4. 访问 MinIO(可选)
    • MinIO 提供对象存储,访问 http://localhost:9001,使用默认凭据(minioadmin:minioadmin)登录。

使用 Python SDK 测试连接(同 Docker 方式):

from milvus import MilvusClient client = MilvusClient(uri="http://localhost:19530")print(client.get_version())

检查容器状态:

docker-compose ps

确保 milvus_standalonemilvus_etcdmilvus_minio 容器均运行正常。

启动 Milvus
在包含 docker-compose.yml 的目录下运行:

docker-compose up -d 

创建持久化目录

mkdir -p volumes/etcd volumes/minio volumes/milvus 

从 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:3standalone:container_name: milvus_standalone image: milvusdb/milvus:v2.4.0 command:["milvus","run","standalone"]environment:ETCD_ENDPOINTS: milvus_etcd:2379MINIO_ADDRESS: milvus_minio:9000volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus ports:-"19530:19530"-"9091:9091"depends_on:- etcd - minio networks:default:name: milvus 

Ubuntu:

sudoaptinstall -y docker-compose 

注意事项:

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

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

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

步骤:

  1. 准备 Kubernetes 集群
    • 生产环境:使用云服务(如 AWS EKS、Google GKE、Azure AKS)或自建集群。
    • 确保集群有足够的资源(建议每个节点 16GB 内存、8 核 CPU)。
  2. 安装 kubectl 和 Helm
    • 说明
      • cluster.enabled: true:启用分布式模式。
      • etcd.replicaCount:etcd 副本数,确保高可用。
      • minio.mode: distributed:启用 MinIO 分布式存储。
      • resources:为每个组件分配 CPU 和内存。
      • persistence:启用持久化存储。
  3. 验证安装
  4. 暴露服务(可选)
    • 生产环境:配置 LoadBalancer 或 Ingress 暴露服务。

本地测试:使用端口转发:

kubectl port-forward svc/my-milvus 19530:19530 

测试连接:

from milvus import MilvusClient client = MilvusClient(uri="http://<service-ip>:19530")print(client.get_version())

获取服务地址:

kubectl get svc 

查找 my-milvus 服务的 ClusterIP 或 LoadBalancer IP。

检查 Pod 状态:

kubectl get pods 

确保所有 Milvus 相关 Pod(my-milvus-proxymy-milvus-querynode 等)处于 Running 状态。

部署 Milvus

helm install my-milvus milvus/milvus -f values.yaml 

创建自定义值文件
创建 values.yaml 文件,调整 Milvus 配置。例如:

cluster:enabled:trueetcd:replicaCount:3minio:mode: distributed replicas:4milvus:standalone:enabled:falseproxy:replicas:2querynode:replicas:4datanode:replicas:2resources:limits:cpu:"4"memory:"16Gi"requests:cpu:"2"memory:"8Gi"persistence:enabled:truestorageClass:"standard"size: 50Gi 

添加 Milvus Helm 仓库

helm repo add milvus https://milvus-io.github.io/milvus-helm-charts/ helm repo update 

Helm:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 |bash

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 sudomv kubectl /usr/local/bin/ 

本地测试:使用 Minikube 或 Kind 创建本地集群。

minikube start --cpus 4 --memory 8192

注意事项:

  • 存储类:确保 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:适合生产环境,支持高可用和分布式部署。

Read more

用说话的方式训练出全能AI [特殊字符],接入飞书、Teams等办公套件,成为全能助手,SQL查数、数据分析、制作PPT等说话就行,Openclaw[特殊字符]

搭建了最近大火的openclaw框架,现在已经成了我的本地全能助手,发微博、做PPT、写代码、维护服务器等全不在话下 真的很强,代替了我大部分的日常任务 训练历程 - 零代码自然语言培养 整个过程真的很神奇,可以不用写代码,只用日常对话就把OpenClaw从基础聊天机器人培养成了全能助手! 第一阶段:基础能力建设(2026年初) 刚开始时,OpenClaw只会简单聊天。通过对话教它: * "你需要学会文件管理,帮我整理文档" * "建立记忆系统,记住重要的决定和偏好"  * "掌握飞书文档操作,方便我们协作" Openclaw,会自动阅读官方文档,进行自我迭代、总结,从而进化出你要求的技能。 神奇的是,这些复杂的技能都是通过自然语言指令实现的!不需要写一行代码,只需要告诉OpenClaw想要什么功能,它就能自动写代码、试错、迭代、总结创建对应的技能系统。 第二阶段:智能协作优化 随着OpenClaw能力的增强,开始优化它的工作方式: * "

By Ne0inhk

2024最新版Node.js下载安装及环境配置教程【保姆级】

一、进入官网地址下载安装包 Node.js 中文网 选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位 二、安装程序 (1)下载完成后,双击安装包,开始安装Node.js (2)直接点【Next】按钮,此处可根据个人需求修改安装路径,修改完毕后继续点击【Next】按钮 (3)可根据自身需求进行,此处我选择默认安装,继续点击【Next】按钮 (4)不选中,直接点击【Next】按钮 (5)点击【Install】按钮进行安装 (6)安装完毕,点击【Finish】按钮 (7)测试安装是否成功,按下【win+R】键,

By Ne0inhk
Spring MVC 响应处理:页面、数据与状态配置详解

Spring MVC 响应处理:页面、数据与状态配置详解

个人主页:♡喜欢做梦 欢迎  👍点赞  ➕关注  ❤️收藏  💬评论 目录 🍋响应 🍊定义 🍊返回静态页面 🍋返回数据:@ResponseBody 🍓 @ResponseBody和@RestController的区别 🍋返回JSON 🍋状态码 🍍状态码的定义 🍍设置状态码 🍋设置header 🍋综合性练习 🍉加法计算器 🍉用户登入 🍋响应 🍊定义 响应(Response)是接收方(服务器、服务或设备)针对发送方(客户端)发起的“请求”所返回的反馈信息。 🍊返回静态页面 html代码: <!DOCTYPE html> <html lang="en"> <head&

By Ne0inhk
RabbitMQ用法的6种核心模式全面解析

RabbitMQ用法的6种核心模式全面解析

文章目录 * **一、RabbitMQ核心架构解析** * 1. AMQP协议模型 * 2. 消息流转原理 * **二、六大核心用法详解** * **1. 简单队列模式(Hello World)** * **2. 工作队列模式(Work Queues)** * **3. 发布/订阅模式(Pub/Sub)** * **4. 路由模式(Routing)** * **5. 主题模式(Topics)** * **6. RPC模式(远程调用)** * **三、高级特性实战** * **1. 消息持久化** * **2. 死信队列(DLX)** * **3. 延迟队列(插件实现)** * **四、集群与高可用方案** * 1. 镜像队列配置 * 2. 联邦跨机房部署 * **五、性能调优指南** * **六、

By Ne0inhk