跳到主要内容
版本:v2.6.x

使用 Helm 在 Kubernetes 中运行 Milvus

本页面介绍了如何使用Milvus Helm 图表在 Kubernetes 中启动 Milvus 实例。

概述

Helm 使用一种称为“图表”(charts)的打包格式。图表是一组文件的 Collection,用于描述一组相关的 Kubernetes 资源。Milvus 提供了一套图表,以帮助您部署 Milvus 的依赖项和组件。

先决条件

  • 安装 Helm CLI

  • 创建一个 K8s 集群

  • 安装StorageClass。您可以通过以下方式查看已安装的 StorageClass。

    $ kubectl get sc

    NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE
    standard (default) k8s.io/minikube-hostpath Delete Immediate false
  • 安装前请检查硬件和软件要求

  • 在安装 Milvus 之前,建议使用Milvus 规格规划工具,根据您的数据规模估算硬件需求。这有助于确保您的 Milvus 安装获得最佳性能和资源分配。

说明

如果拉取镜像时遇到任何问题,请将问题详情发送至community@zilliz.com联系我们,我们将为您提供必要的支持。

安装 Milvus Helm 图表

在安装 Milvus Helm 图表之前,您需要添加 Milvus Helm 仓库。

helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
说明

位于https://github.com/milvus-io/milvus-helm 的 Milvus Helm Charts 仓库现已归档。我们现在使用新仓库https://github.com/zilliztech/milvus-helm 。归档的仓库仍可提供 4.0.31 及更早版本的图表,但后续版本请使用新仓库。

然后按以下方式从仓库获取 Milvus Helm Charts:

$ helm repo update

您可以随时运行以下命令来获取最新的 Milvus Helm Charts。

在线安装

1. 部署 Milvus 集群

安装 Helm 图表后,您即可在 Kubernetes 上启动 Milvus。本节将指导您部署 Milvus 集群。

说明

需要独立部署吗?

如果您希望以独立模式(单节点)部署 Milvus 用于开发或测试,请使用以下命令:

helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.19 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true

注意:独立模式默认使用 Woodpecker 作为消息队列,并启用 Streaming Node 组件。详情请参阅《架构概述》和《使用 Woodpecker》。

部署 Milvus 集群:

以下命令将部署一个针对 v2.6.19 进行过优化设置的 Milvus 集群,并使用 Woodpecker 作为推荐的消息队列:

helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.19 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false

该命令的作用:

  • 使用Woodpecker作为消息队列(推荐使用,可减少维护工作)
  • 启用新的流式节点组件以提升性能
  • 禁用旧版索引节点(其功能现由数据节点处理)
  • 禁用 Pulsar,转而使用 Woodpecker
说明

Milvus 2.6.x 中的架构变更:

  • 消息队列:现推荐使用Woodpecker(与 Pulsar 相比可减少基础设施维护工作)
  • 新组件:引入流式处理节点(Streaming Node),并默认启用
  • 组件合并索引节点数据节点合并为单一的数据节点

有关完整的架构详情,请参阅《架构概述》。

其他消息队列选项:

如果您更倾向于使用Pulsar(传统选择)而非 Woodpecker:

helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.19 \
--set streaming.enabled=true \
--set indexNode.enabled=false

后续步骤: 上述命令将按推荐配置部署 Milvus。若用于生产环境:

说明

重要注意事项:

  • 版本命名:仅使用字母、数字和连字符(不允许使用点)

  • Kubernetes v1.25 及以上版本:若遇到 PodDisruptionBudget 相关问题,请使用以下解决方法:

    helm install my-release zilliztech/milvus \
    --set pulsar.bookkeeper.pdb.usePolicy=false \
    --set pulsar.broker.pdb.usePolicy=false \
    --set pulsar.proxy.pdb.usePolicy=false \
    --set pulsar.zookeeper.pdb.usePolicy=false

如需更多信息,请参阅Milvus Helm 图表Helm 文档

2. 检查 Milvus 集群状态

通过检查 Pod 状态来验证部署是否成功:

kubectl get pods

**等待所有 Pod 显示“Running”状态。**采用 v2.6.19 配置时,您应看到类似以下的 Pod 状态:

NAME                                             READY  STATUS   RESTARTS  AGE
my-release-etcd-0 1/1 Running 0 3m23s
my-release-etcd-1 1/1 Running 0 3m23s
my-release-etcd-2 1/1 Running 0 3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm 1/1 Running 0 3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj 1/1 Running 0 3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv 1/1 Running 0 3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg 1/1 Running 0 3m24s
my-release-milvus-streaming-node-xxxxxxxxx 1/1 Running 0 3m24s
my-release-minio-0 1/1 Running 0 3m23s
my-release-minio-1 1/1 Running 0 3m23s
my-release-minio-2 1/1 Running 0 3m23s
my-release-minio-3 1/1 Running 0 3m23s
my-release-pulsar-autorecovery-86f5dbdf77-lchpc 1/1 Running 0 3m24s
my-release-pulsar-bookkeeper-0 1/1 Running 0 3m23s
my-release-pulsar-bookkeeper-1 1/1 Running 0 98s
my-release-pulsar-broker-556ff89d4c-2m29m 1/1 Running 0 3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-0 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-metadata-98zbr 0/1 Completed 0 3m24s

需验证的关键组件:

  • Milvus 组件mixcoorddatanodequerynodeproxystreaming-node
  • 依赖项etcd (元数据)、minio (对象存储)、pulsar (消息队列)

设置好端口转发后(参见下一步),您还可以通过http://127.0.0.1:9091/webui/ 访问Milvus WebUI。详情请参阅Milvus WebUI

3. 连接到 Milvus

若要在 Kubernetes 外部连接到您的 Milvus 集群,您需要设置端口转发。

设置端口转发:

kubectl port-forward service/my-release-milvus 27017:19530

此命令将您的本地端口27017 转发至 Milvus 端口19530 。您应看到:

Forwarding from 127.0.0.1:27017 -> 19530

连接详情:

  • 本地连接localhost:27017
  • Milvus 默认端口19530
说明

端口转发选项:

  • 自动分配本地端口:使用:19530 代替27017:19530 ,让 kubectl 选择一个可用端口

  • 监听所有接口:添加--address 0.0.0.0 以允许其他机器建立连接:

    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
  • 独立部署:若使用独立模式,服务名称保持不变

使用 Milvus 时请保持此终端窗口打开。现在,您可以使用任何 Milvus SDK 通过localhost:27017 连接到 Milvus。

(可选)更新 Milvus 配置

您可以通过编辑values.yaml 文件并重新应用,来更新 Milvus 集群的配置。

  1. 创建一个包含所需配置的values.yaml 文件。

    以下内容假设您希望启用proxy.http

    extraConfigFiles:
    user.yaml: |+
    proxy:
    http:
    enabled: true

    有关适用的配置项,请参阅“系统配置”

  2. 应用values.yaml 文件。

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. 检查更新后的配置。

    helm get values my-release

    输出应显示已更新的配置。

访问 Milvus WebUI

Milvus 随附了一个名为 Milvus WebUI 的内置图形化用户界面工具,您可以通过浏览器访问该工具。Milvus WebUI 通过简单直观的界面增强了系统的可观察性。您可以使用 Milvus WebUI 观察 Milvus 组件和依赖项的统计数据与指标,查看数据库和 Collection 的详细信息,并列出详细的 Milvus 配置。 有关 Milvus WebUI 的详细信息,请参阅Milvus WebUI

要启用对 Milvus WebUI 的访问,您需要将代理 Pod 进行端口转发至本地端口。

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091

现在,您可以通过http://localhost:27018 访问 Milvus WebUI。

离线安装

如果您处于网络受限的环境中,请按照本节中的步骤启动 Milvus 集群。

1. 获取 Milvus 清单

运行以下命令获取 Milvus 配置文件。

$ helm template my-release zilliztech/milvus > milvus_manifest.yaml

上述命令会为 Milvus 集群生成图表模板,并将输出保存到名为milvus_manifest.yaml 的清单文件中。使用此清单,您可以安装一个 Milvus 集群,其组件和依赖项将分别位于不同的 Pod 中。

说明
  • 若要在独立模式下安装 Milvus 实例(即所有 Milvus 组件均包含在单个 Pod 中),则应运行helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml ,以生成独立模式下 Milvus 实例的图表模板。
  • 若要修改 Milvus 配置,请下载 value.yaml 模板,在其中填写所需设置,然后使用helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml 据此生成相应的清单文件。

2. 下载镜像拉取脚本

镜像拉取脚本采用 Python 编写。您应将该脚本及其依赖项一并下载到requirement.txt 文件中。

$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py

3. 拉取并保存镜像

运行以下命令以拉取并保存所需的镜像。

$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml

图片将下载到当前目录下名为images 的子文件夹中。

4. 加载图像

现在,您可以按照以下步骤将图像加载到网络受限环境中的主机上:

$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done

5. 部署 Milvus

$ kubectl apply -f milvus_manifest.yaml

至此,您可以按照在线安装指南中的步骤23检查集群状态,并将本地端口转发至 Milvus。

升级正在运行的 Milvus 集群

运行以下命令,将正在运行的 Milvus 集群升级至最新版本:

$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values

卸载 Milvus

运行以下命令以卸载 Milvus。

$ helm uninstall my-release

下一步

在 Docker 中安装 Milvus 后,您可以: