基于 阿里云 ACK 搭建开源向量数据库 Milvus

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 生成式 AI(Generative AI)引爆了向量数据库(Vector Database)市场,基于大模型的各种应用场景会需要使用到向量数据库。其中,Milvus 是一个高度灵活、可靠且速度极快的云原生开源向量数据库。它为 embedding 相似性搜索和 AI 应用程序提供支持,并努力使每个组织都可以访问向量数据库。 Milvus 可以存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的十亿级别以上的 embedding 向量。本文介绍在阿里云ACK上部署Milvus并且通过attu访问的步骤。

一、准备资源

可先参考 Environment Checklist for Milvus Milvus on Kubernetes 在云上购买和配置相关的资源。

本人购买的云资源是:

ACK托管版

K8S版本 1.24.6-aliyun.1

3台 32vCPU 128GB ecs.g6.8xlarge

MAC电脑客户端(已安装kubectl工具)

二、集群创建:

登陆ACK控制台:https://cs.console.aliyun.com/?spm=5176.181001.J_5253785160.4.38a84e26LzhVIl#/k8s/cluster/list

image.png

本集群基于Terway网络构建

image.png

为了便于集群访问公网,以及公网访问集群API Server,集群开通时候默认勾选了SNAT和Eip暴露公网api server

image.png

集群Worker节点按照实际需求选用规格配比,本次选用g6实例,配置essd云盘

image.png

由于,前置步骤为集群开启了SNAT,本次不针对每个Worker开启公网地址,如果额外有需求要每个worker绑定公网IP,可以这里开启,或者后续单独给每台worker绑定eip

image.png

后置步骤,按照默认开通集群。


二、连接刚刚创建的ACK集群

选用MAC电脑安装kubectl工具(参考安装指导)

https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/

安装完毕后,创建$HOME/.kube目录下的config

image.png

进去刚刚创建好的集群,粘贴公网访问凭证到config中,也可以生成临时的凭证

image.png

上述操作完毕后,

kubectl get namespace

测试连通性

image.png

详细的操作指导同样可以参考官网链接:

https://help.aliyun.com/document_detail/86494.html?spm=a2c4g.86737.0.0.7ba65143wCxNEb

集群创建完毕后,为了后面部署Milvus,创建一个存储类,并且设置为默认,供后面Milvus的各组件可以自动创建存储卷

集群进入存储-存储类-创建

image.png

存储类型选用了cloud_essd类型云盘,额外新增了zoneId,设置存储所在区域和worker节点在同一个可用区

image.png

设置上面创建的存储类为默认的存储类

kubectl patch storageclass milvus-beijing -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

其中,红框部分替换为自己创建的存储类的名称

image.png

通过,可以看到设置的存储类已经标识为default

kubectl get sc

image.png

三、部署Milvus数据库

本次部署,需要helm部署方式,详细的可以参考官网文档

https://milvus.io/docs/install_cluster-helm.md

首先,添加 Milvus Helm 仓库并更新。

helm repo add milvus https://milvus-io.github.io/milvus-helm/

helm repo update

因为我之前部署过,所以这里显示已经存在

image.png

安装Milvus 和Attu

helm install my-release milvus/milvus --set attu.enabled=true

安装完毕后显示如下:

image.png

验证下pod的拉起情况,发现etcd的状态是pending状态,不正常,原因是官方设置etcd的PVC总量是10G,而阿里云essd,需要至少20G才能初始化

kubectl get pods

image.png

删掉重建,设置存储容量大于等于20G

image.png

image.png

再根据kubectl get pods刷新,发现所有的Pod都是runnng状态了,两个job类型的pod是completed状态;也可以在控制台的负载界面观察pod的情况(工作负载-有状态,工作负载-无状态)

image.png

四、优化Milvus配置

为了可以公网访问attu工具,需要将attu工具开通公网,控制台登陆集群后,网络-服务,找到my-release-milvus-attu服务

image.png

更新服务的类型由虚拟集群ip为节点负载均衡(公网)

image.png

image.png

更新完毕后,会新增外部端点访问,可以通过浏览器访问attu的登陆界面

image.png

image.png

image.png

如果需要公网访问集群,也可以通过上述方法,将Milvus更新公网端口

image.png

如果针对不同的数据量,可以使用Milvus Sizing Tool去计算Milvus各组件建议的资源配比;通过milvus_resources.yaml 刷新集群组件资源配置

https://milvus.io/tools/sizing/

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
15天前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
1月前
|
专有云 Serverless 持续交付
亚太唯一,阿里云再度入选Gartner®容器管理魔力象限领导者
Gartner正式发布 2024《容器管理魔力象限》报告,阿里云再度成为中国唯一一家入选「领导者象限」的科技公司。
|
3天前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
15 3
|
20天前
|
Kubernetes 安全 容器
关于K8s,不错的开源工具
【10月更文挑战第12天】
|
26天前
|
存储 Kubernetes Cloud Native
Kubernetes上的数据库
【10月更文挑战第16天】数据库在Kubernetes上的应用日益普及,超过72%的组织已在Kubernetes上运行数据库。这得益于Kubernetes的声明式特性和标准化部署,能够加速开发、降低成本、减少复杂性,并提高系统的弹性和正常运行时间。Kubernetes为数据管理提供了自动化操作、环境一致性、数据可移植性和自助服务功能,特别适合现代云原生应用。然而,引入数据库到Kubernetes时需考虑团队技能、自动化支持及存储配置等问题。
17 1
|
27天前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
104 2
|
2月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
1月前
|
运维 Kubernetes 数据处理
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
Kubernetes已经成为事实的云原生操作系统,成为业务上云、容器化的标准。从过去无状态应用、企业核心应用,到现在AI时代的数据处理、AI训练、科学仿真等,越来越多的离线任务跑在K8s上。
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1