🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI
  • Home
  • Blog
  • 在 Kubernetes 上部署 Milvus:Kubernetes 用户分步指南

在 Kubernetes 上部署 Milvus:Kubernetes 用户分步指南

  • Engineering
September 26, 2024
Gael Gu

Milvus是一个开源向量数据库,旨在通过向量表示来存储、索引和搜索海量非结构化数据,因此非常适合人工智能驱动的应用,如相似性搜索、语义搜索、检索增强生成(RAG)、推荐引擎和其他机器学习任务。

但 Milvus 的更强大之处在于它与 Kubernetes 的无缝集成。如果你是 Kubernetes 爱好者,你就会知道该平台是协调可扩展分布式系统的完美平台。Milvus 充分利用 Kubernetes 的功能,让你可以轻松部署、扩展和管理分布式 Milvus 集群。本指南将提供使用 Milvus 操作符在 Kubernetes 上设置 Milvus 的清晰、循序渐进的演示。

前提条件

开始之前,请确保具备以下先决条件:

  • 已启动并运行的 Kubernetes 集群。如果是本地测试,minikube 是个不错的选择。

  • kubectl 安装并配置好与 Kubernetes 集群交互。

  • 熟悉基本的 Kubernetes 概念,如 pod、服务和部署。

第 1 步:安装 Minikube(用于本地测试)

如果你需要建立本地 Kubernetes 环境,minikube 就是你的理想工具。minikube入门页面上有正式的安装说明。

1.安装 Minikube

访问 minikube 发布页面,为你的操作系统下载相应的版本。对于 macOS/Linux,您可以使用以下命令:

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

2.启动 Minikube

$ minikube start

3.与集群交互

现在,您可以使用 minikube 内的 kubectl 与集群交互。如果没有安装 kubectl,minikube 默认会下载相应的版本。

$ minikube kubectl cluster-info

或者,你也可以创建一个指向 minikube 二进制文件的符号链接,命名为kubectl ,以方便使用。

$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info

第 2 步:配置存储类

在 Kubernetes 中,StorageClass定义了工作负载可用的存储类型,为管理不同的存储配置提供了灵活性。在继续之前,你必须确保群集中有一个默认的 StorageClass。下面介绍如何检查并在必要时配置一个。

1.检查已安装的存储类

要查看 Kubernetes 集群中可用的存储类,请运行以下命令:

$ kubectl get sc

这将显示群集中安装的存储类列表。如果已经配置了默认存储类,则会以(default) 标记。

2.配置默认存储类(如有必要)

如果没有设置默认 StorageClass,可以通过在 YAML 文件中定义来创建一个。使用下面的示例创建默认 StorageClass:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: default-storageclass
provisioner: k8s.io/minikube-hostpath

此 YAML 配置定义了一个名为default-storageclassStorageClass ,它使用minikube-hostpath provisioner,常用于本地开发环境。

3.应用 StorageClass

创建default-storageclass.yaml 文件后,使用以下命令将其应用到群集:

$ kubectl apply -f default-storageclass.yaml

这将为你的群集设置默认的 StorageClass,确保今后能正确管理存储需求。

步骤 3:使用 Milvus 操作符安装 Milvus

Milvus 操作符简化了在 Kubernetes 上部署 Milvus、管理部署、扩展和更新的过程。在安装 Milvus Operator 之前,你需要安装cert-manager,它为 Milvus Operator 使用的 webhook 服务器提供证书。

1.安装证书管理器

Milvus Operator 需要一个cert-manager来管理用于安全通信的证书。确保安装1.1.3或更高版本的cert-manager。要安装它,请运行以下命令:

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml

安装完成后,执行以下命令验证 cert-manager pod 是否正在运行:

$ kubectl get pods -n cert-manager

2.安装 Milvus 操作符

一旦 cert-manager 启动并运行,就可以安装 Milvus 操作符了。运行以下命令,使用kubectl 进行部署:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

您可以使用以下命令检查 Milvus Operator pod 是否正在运行:

$ kubectl get pods -n milvus-operator

3.部署 Milvus 群集

一旦 Milvus Operator pod 运行,就可以用操作符部署 Milvus 群集。以下命令将使用默认配置部署一个 Milvus 群集,并将其组件和依赖项分别放在不同的 pod 中:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

要自定义 Milvus 设置,需要用自己的配置 YAML 文件替换 YAML 文件。除了手动编辑或创建文件外,还可以使用 Milvus 大小工具调整配置,然后下载相应的 YAML 文件。

要自定义 Milvus 设置,必须用自己的配置替换默认 YAML 文件。您可以手动编辑或创建该文件,使其符合您的具体要求。

或者,你也可以使用Milvus 大小工具,以获得更简化的方法。通过该工具,你可以调整各种设置,如资源分配和存储选项,然后下载相应的 YAML 文件和你所需的配置。这可确保您的 Milvus 部署针对特定用例进行了优化。

图Milvus 大小工具

完成部署可能需要一些时间。你可以通过命令查看 Milvus 集群的状态:

$ kubectl get milvus my-release

一旦你的 Milvus 集群准备就绪,Milvus 集群中的所有 pod 都应已运行或完成:

$ kubectl get pods

第 4 步:访问 Milvus 群集

部署好 Milvus 群集后,你需要通过将本地端口转发到 Milvus 服务端口来访问它。请按照以下步骤检索服务端口并设置端口转发。

1.获取服务端口

首先,使用以下命令确定服务端口。将<YOUR_MILVUS_PROXY_POD> 替换为 Milvus 代理 pod 的名称,通常以my-release-milvus-proxy- 开头:

$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

该命令将返回 Milvus 服务正在使用的端口号。

2.转发端口

要在本地访问 Milvus 集群,请使用以下命令将本地端口转发到服务端口。将<YOUR_LOCAL_PORT> 替换为要使用的本地端口,将<YOUR_SERVICE_PORT> 替换为上一步中获取的服务端口:

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>

该命令允许端口转发,以监听主机的所有 IP 地址。如果只需要服务监听localhost ,则可以省略--address 0.0.0.0 选项。

端口转发设置完成后,就可以通过指定的本地端口访问 Milvus 集群,进行进一步操作或集成。

步骤 5:使用 Python SDK 连接 Milvus

随着 Milvus 集群的启动和运行,你现在可以使用任何 Milvus SDK 与之交互。在本例中,我们将使用 Milvus 的Python SDK PyMilvus连接到集群并执行基本操作。

1.安装 PyMilvus

要通过 Python 与 Milvus 交互,需要安装pymilvus 软件包:

$ pip install pymilvus

2.连接 Milvus

下面是一个连接到 Milvus 集群的 Python 脚本示例,演示了如何执行创建 Collections 等基本操作。

from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
   client.drop_collection(collection_name)
client.create_collection(
   collection_name=collection_name,
   dimension=768,  # The vectors we will use in this demo has 768 dimensions
)

说明

  • 连接到 Milvus:脚本使用在步骤 4 中设置的本地端口连接到运行在localhost 上的 Milvus 服务器。

  • 创建 Collections:它将检查名为example_collection 的 Collections 是否已经存在,如果已经存在则将其删除,然后创建一个具有 768 维向量的新 Collection。

该脚本建立了与 Milvus Operator 集群的连接,并创建了一个 Collection,作为插入向量和执行相似性搜索等更复杂操作的起点。

结论

在 Kubernetes 上的分布式设置中部署 Milvus,可以释放管理大规模向量数据的强大功能,实现无缝可扩展性和高性能 AI 驱动型应用。通过本指南,您已经学会了如何使用 Milvus 操作符设置 Milvus,从而简化并高效地完成整个过程。

在继续探索 Milvus 的过程中,您可以考虑扩展集群以满足不断增长的需求,或将其部署到亚马逊 EKS、谷歌云或 Microsoft Azure 等云平台上。为了加强管理和监控,Milvus BackupBirdwatcherAttu等工具为维护部署的健康和性能提供了宝贵的支持。

现在,您已经准备好在 Kubernetes 上充分发挥 Milvus 的潜力,祝您部署愉快!🚀

更多资源

Like the article? Spread the word

扩展阅读