使用 Helm 在 Kubernetes 中运行 Milvus

本页面演示了如何使用Milvus Helm 图表在 Kubernetes 中启动一个 Milvus 实例。

概述

Helm 使用一种称为“图表”(charts)的打包格式。图表是一组文件的集合,用于描述一组相关的 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 Chart

在安装 Milvus Helm Chart 之前,您需要添加 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 图表。

在线安装

1. 部署 Milvus 集群

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

需要独立部署吗?

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

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --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.24 进行过优化设置的 Milvus 集群,并使用 Woodpecker 作为推荐的消息队列:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --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 相比可减少基础设施维护工作)
  • 新组件:引入流式处理节点,并默认启用
  • 组件合并:索引节点和数据节点合并为单一的数据节点

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

其他消息队列选项:

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

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --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.24 配置时,您应看到类似以下格式的 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 组件:mixcoord 、datanode 、querynode 、proxy ,streaming-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

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

升级正在运行的 Milvus 集群

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

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

卸载 Milvus

运行以下命令以卸载 Milvus。

$ helm uninstall my-release

下一步

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

翻译自DeepL

Office Hours

米尔沃斯办公时间

向 Milvus 专家 Zilliz 寻求生产部署方面的帮助。

预订免费的 1:1 课程

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?