前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Milvus x KubeSphere: 如何一键部署火爆全球的开源向量数据库

Milvus x KubeSphere: 如何一键部署火爆全球的开源向量数据库

作者头像
Zilliz RDS
发布2021-06-25 11:27:00
1.2K0
发布2021-06-25 11:27:00
举报

✏️ 作者介绍:Mia Li,Zilliz 数据工程师

本文将介绍如何使用 KubeSphere 容器平台可视化部署 Milvus 向量数据库以及 Milvus 在云原生场景下的基本使用。下面,让我们先来简单了解一下 Milvus 和 KubeSphere 吧!

Milvus 是什么?

Milvus 是一款开源的向量数据库,支持针对 TB 级向量的增删改操作和近实时查询,具有高度灵活、稳定可靠以及高速查询等特点。Milvus 集成 FAISS、NMSLIB、Annoy 等常见的向量索引库,提供一整套简单直观的 API,允许用户针对不同场景选择适合的索引类型。此外,Milvus 还支持标量数据过滤,进一步提高召回率,增强搜索的灵活性。

KubeSphere 是什么?

KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。

环境准备

1. 创建新的 Workspace。

点击左上角平台管理,选择访问控制,创建名为 milvus-workspace 的企业空间。

2. 创建项目。

点击左侧的项目管理,创建一个名为 milvus 的新项目。KubeSphere 中的项目等同于 Kubernetes 中的 Namespace。

3. 添加镜像仓库

进入创建好的 milvus-workspace,分别将 milvus-helmhelm-stable 仓库添加到 KubeSphere 容器平台。

仓库地址如下:

代码语言:javascript
复制
https://milvus-io.github.io/milvus-helm/
https://charts.helm.sh/stable/

部署 StorageClass

为了在 Kubernetes 集群中将一个存储卷(volume)同时挂载在多个 pod 上,允许多个 pod 对同一组数据作出修改,共享存储必不可少。目前常见的共享资源协议有 Network File System(NFS)、Common Internet File System(CIFS)等。手动运维持久卷(Persistent Volume,PV)十分繁琐,因此 KubeSphere 也支持动态卷供应(Dynamic Volume Provisioning)。这一功能基于存储类型(Storage Class)实现,为管理员提供了创建 PV 的模板。下文将以 NFS 为例,演示如何利用可用的 NFS server 和 nfs-client-provisioner 插件配置一个 NFS 类型的 StorageClass,实现在用户请求时自动提供存储。

  • 在 AWS 上部署建议使用 Elastic File System (EFS).
  • 在 Azure 上部署建议使用 Azure File Storage (AFS).

1. 在全部 worker 节点安装 nfs-common。

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install nfs-common -y

2. 进入 Milvus 项目,部署新应用。

3. 选择 helm-stable 仓库,搜索 nfs-client-provisioner

4. 选择 nfs-client-provisioner,点击部署

5. 修改应用配置。

server:NFS server 的 IP 地址。

path:NFS server 所在的导出目录。

mountOptions:client 上挂载 NFS 挂载点时使用的参数。

6. 查看 StorageClass。

启动成功后,点击左上角进入集群管理,点击存储管理,查看存储类型

可以看到,此时 StorageClass 中存在一个名为 nfs-client 的类型。在后续修改 Milvus 集群的配置文件时,显式指定 Persistent Volume Claim(PVC)对应的 StorageClass 为 nfs-client,StorageClass 通过模板自动创建 PV 并与 PVC 绑定。

部署 Milvus 集群

Milvus 作为一款针对海量特征数据的向量数据库,其在单台服务器上的数据处理规模就可达到十亿级。而对于百亿甚至千亿级数据,则需要可横向扩展的 Milvus 集群来满足对如此大规模的向量数据的高性能检索需求。下面我们将介绍如何在 KubeSphere 上利用 chart 仓库一键部署 Milvus 集群。

1. 添加 Milvus 应用。

同上文的 nfs-client,点击应用负载部署新的应用。

2. 修改配置文件。

开启集群模式,并修改 StorageClass 参数,用于引用 NFS server 的持久存储。此外可以根据需要指定 Milvus 的 gRPC 服务端口。

A

B

Parameter

Value

cluster.enabled

TRUE

persistence.enabled

TRUE

persistence.persistentVolumeClaim.storageClass

nfs-client

service.port

19530(default)

3. 部署成功。

修改参数后点击部署,稍等片刻即可在 KubeSphere 应用列表中看到 Milvus 集群,表示 Milvus 部署成功。

访问 Milvus 集群

1. 查看外网访问类型。

由上图可见默认服务为 ClusterIP,即只有集群内的应用可以访问该服务,而不允许从集群外部访问。因此当我们从集群外部访问时,需要更换服务类型以暴露应用。Kubernetes 有两种暴露服务的访问方式:NodePort 和 LoadBalancer。下文将演示通过 KubeSphere 直接修改服务类型,允许从外网访问并使用 Milvus 集群。

2. 点击编辑外网访问,选择 NodePort。

修改后可以看到 gRPC 服务端口映射出了节点端口。此时,只需连接集群中任意一台服务器的 IP 地址和 Mishards 的节点端口即可在集群外部使用该 Milvus 集群。

3. 在集群外的服务器安装 Milvus Python SDK:

代码语言:javascript
复制
$ pip3 install pymilvus==1.1.0

4. 下载 Python 示例代码:

代码语言:javascript
复制
$ wget https://raw.githubusercontent.com/milvus-io/pymilvus/v1.1.0/examples/example.py

修改 _HOST 为集群中任意一台服务器 IP 地址,_PORT 为暴露服务的静态端口。

5. 运行示例代码:

代码语言:javascript
复制
$ python3 example.py 
# You are expected to see the following output. 
CollectionSchema(collection_name='example_collection_', dimension=8, index_file_size=32, metric_type=<MetricType: L2>)
...

Milvus 支持使用多种 AI 模型将非结构化数据向量化,提供向量数据搜索服务,可广泛应用于图像处理、自然语言处理、推荐系统、新药发现等领域。如需处理海量特征向量,则可采取本文介绍的 Milvus 分布式集群方案来增强横向扩容能力。得益于其面向开发、测试和运维友好的图形用户界面,使用 KubeSphere 一键部署 Milvus 集群可以大大节省学习和部署 Kubernetes 以及 Milvus 及其同类应用的成本。

参考文章

  1. https://kubesphere.io/zh/docs/reference/storage-system-installation/nfs-server/
  2. https://www.myfreax.com/how-to-mount-an-nfs-share-in-linux/

Github @Milvus-io|CSDN @Zilliz Planet|Bilibili @Zilliz-Planet

Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。

Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 目前是 LF AI & Data 基金会的孵化阶段项目,能够管理大量非结构化数据集。我们的技术在新药发现、计算机视觉、推荐引擎、聊天机器人等方面具有广泛的应用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Milvus 是什么?
  • KubeSphere 是什么?
  • 环境准备
  • 部署 StorageClass
  • 部署 Milvus 集群
  • 访问 Milvus 集群
    • 参考文章
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档