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

2021/06/18 10:36
阅读数 1.6K
AI总结
✏️ 作者介绍: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-helm 和 helm-stable 仓库添加到 KubeSphere 容器平台。

仓库地址如下:
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。
$ 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:
   
   
   
$ pip3 install pymilvus==1.1.0

4. 下载 Python 示例代码:
   
   
   
$ wget https://raw.githubusercontent.com/milvus-io/pymilvus/v1.1.0/examples/example.py

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


5. 运行示例代码:
   
   
   
$ 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 基金会的孵化阶段项目,能够管理大量非结构化数据集。我们的技术在新药发现、计算机视觉、推荐引擎、聊天机器人等方面具有广泛的应用。


文章转载自Zilliz点击这里阅读原文了解更多


Linux基金会诚意邀您参与:

联系关于Linux基金会




Linux基金会是非营利性组织,是技术生态系统的重要组成部分。 

Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。请长按以下二维码进行关注。

本文分享自微信公众号 - LFAPAC(gh_8442c14fe49e)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部