🚀 Try Zilliz Cloud, the fully managed Milvus, for free—experience 10x faster performance! Try Now>>

milvus-logo
LFAI
首页
  • 开始

使用 Helm Chart 在支持 GPU 的情况下运行 Milvus

本页说明如何使用 Helm Chart 启动支持 GPU 的 Milvus 实例。

概述

Helm 使用一种称为图表的打包格式。图表是描述一组相关 Kubernetes 资源的文件 Collection。Milvus 提供了一组图表来帮助你部署 Milvus 依赖项和组件。Milvus Helm Chart是一个使用 Helm 包管理器在 Kubernetes (K8s) 集群上引导 Milvus 部署的解决方案。

前提条件

如果在绘制镜像时遇到任何问题,请通过community@zilliz.com联系我们并提供问题详情,我们将为您提供必要的支持。

为 Milvus 安装 Helm 图表

Helm 是一个 K8s 软件包管理器,可以帮助你快速部署 Milvus。

  1. 添加 Milvus Helm 资源库。
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

https://milvus-io.github.io/milvus-helm/ 上的 Milvus Helm Charts 软件仓库已经存档,你可以从https://zilliztech.github.io/milvus-helm/ 获取进一步更新,具体如下:

helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus

存档软件源仍可用于 4.0.31 之前的图表。对于后续版本,请使用新版本库。

  1. 在本地更新图表。
$ helm repo update

启动 Milvus

安装 Helm 图表后,就可以在 Kubernetes 上启动 Milvus。在本节中,我们将指导你完成启动支持 GPU 的 Milvus 的步骤。

您应该使用 Helm 启动 Milvus,具体方法是指定版本名称、图表和您期望更改的参数。在本指南中,我们使用my-release 作为版本名称。要使用不同的版本名称,请将以下命令中的my-release 替换为您正在使用的版本名称。

Milvus 允许您为 Milvus 分配一个或多个 GPU 设备。

1.分配单个 GPU 设备

支持 GPU 的 Milvus 允许您分配一个或多个 GPU 设备。

  • Milvus 集群

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
    EOF
    
    $ helm install my-release milvus/milvus -f custom-values.yaml
    
  • 独立的 Milvus

    cat <<EOF > custom-values.yaml
    standalone:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
    EOF
    
    $ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsar.enabled=false -f custom-values.yaml
    

2.分配多个 GPU 设备

除了单个 GPU 设备,您还可以为 Milvus 分配多个 GPU 设备。

  • Milvus 集群

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    EOF
    

    在上述配置中,索引节点和查询节点共享两个 GPU。要为索引节点和查询节点分配不同的 GPU,可以通过在配置文件中设置extraEnv 来相应修改配置,具体如下:

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "1"
    EOF
    
    $ helm install my-release milvus/milvus -f custom-values.yaml
    
    • 版本名称只能包含字母、数字和破折号。版本名称中不允许使用点。
    • 在使用 Helm 安装 Milvus 时,默认命令行会安装群集版本的 Milvus。独立安装 Milvus 时需要进一步设置。
    • 根据Kuberenetes 的废弃 API 迁移指南,PodDisruptionBudget 的policy/v1beta1API 版本自 v1.25 起不再提供服务。建议您迁移清单和 API 客户端,改用policy/v1API 版本。
      对于仍在 Kuberenetes v1.25 及更高版本上使用 PodDisruptionBudget 的policy/v1beta1API 版本的用户,作为一种变通方法,您可以运行以下命令来安装 Milvus:
      helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
    • 请参阅Milvus Helm 图表Helm了解更多信息。
  • Milvus 单机版

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    EOF
    

    在上述配置中,索引节点(indexNode)和查询节点(queryNode)共享两个 GPU。要为 indexNode 和 queryNode 分配不同的 GPU,可以通过在配置文件中设置 extraEnv 来相应修改配置,如下所示:

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "1"
    EOF
    
    $ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsar.enabled=false -f custom-values.yaml
    

2.检查 Milvus 状态

运行以下命令检查 Milvus 状态:

$ kubectl get pods

Milvus 启动后,READY 列会显示所有 pod 的1/1

  • Milvus 集群

    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-datacoord-6fd4bd885c-gkzwx     1/1    Running   0        3m23s
    my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        3m23s
    my-release-milvus-indexcoord-5bfcf6bdd8-nmh5l    1/1    Running   0        3m23s
    my-release-milvus-indexnode-5c5f7b5bd9-l8hjg     1/1    Running   0        3m24s
    my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        3m24s
    my-release-milvus-querycoord-579cd79455-xht5n    1/1    Running   0        3m24s
    my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        3m24s
    my-release-milvus-rootcoord-7fb9488465-dmbbj     1/1    Running   0        3m23s
    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 Standalone

    NAME                                               READY   STATUS      RESTARTS   AGE
    my-release-etcd-0                                  1/1     Running     0          30s
    my-release-milvus-standalone-54c4f88cb9-f84pf      1/1     Running     0          30s
    my-release-minio-5564fbbddc-mz7f5                  1/1     Running     0          30s
    

3.将本地端口转发给 Milvus

确认 Milvus 服务器正在监听哪个本地端口。用自己的 pod 名称替换 pod 名称。

$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530

然后,运行以下命令将本地端口转发到 Milvus 服务的端口。

$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530

可以选择使用:19530 代替上述命令中的27017:19530 ,让kubectl 为你分配一个本地端口,这样你就不必管理端口冲突了。

默认情况下,kubectl 的端口转发只监听localhost 。如果想让 Milvus 监听所选或所有 IP 地址,请使用address 标志。下面的命令使端口转发监听主机上的所有 IP 地址。

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

现在,你可以使用转发的端口连接 Milvus。

访问 Milvus WebUI

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

要启用对 Milvus Web UI 的访问,需要将代理 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 Web UI。

卸载 Milvus

运行以下命令卸载 Milvus。

$ helm uninstall my-release

下一步

安装 Milvus 后,您可以

翻译自DeepL

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

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

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?