用 KubeBlocks 管理 Milvus
生成式人工智能的爆火引发了人们对向量数据库的关注。目前,KubeBlocks 支持 Milvus 的管理和运维。本文档展示如何使用 KubeBlocks 管理 Milvus。
Milvus 是高度灵活、可靠且速度极快的云原生开源矢量数据库。它为 embedding 相似性搜索和 AI 应用程序提供支持,并努力使每个组织都可以访问矢量数据库。 Milvus 可以存储、索引和管理由深度神经网络和其他机器学习 (ML) 模型生成的十亿级别以上的 embedding 向量。
开始之前
创建集群
步骤:
创建一个 Milvus 集群。
如需管理其他向量数据库,可将
cluster-definition
的值更改为其他的数据库。kbcli cluster create milvus --cluster-definition=milvus-2.3.2
检查集群是否已创建。
kbcli cluster list
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
milvus default milvus-2.3.2 milvus-2.3.2 Delete Creating Jul 05,2024 17:35 UTC+0800查看集群信息。
kbcli cluster describe milvus
>
Name: milvus Created Time: Jul 05,2024 17:35 UTC+0800
NAMESPACE CLUSTER-DEFINITION VERSION STATUS TERMINATION-POLICY
default milvus-2.3.2 Running Delete
Endpoints:
COMPONENT MODE INTERNAL EXTERNAL
milvus ReadWrite milvus-milvus.default.svc.cluster.local:19530 <none>
minio ReadWrite milvus-minio.default.svc.cluster.local:9000 <none>
proxy ReadWrite milvus-proxy.default.svc.cluster.local:19530 <none>
milvus-proxy.default.svc.cluster.local:9091
Topology:
COMPONENT INSTANCE ROLE STATUS AZ NODE CREATED-TIME
etcd milvus-etcd-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
minio milvus-minio-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
milvus milvus-milvus-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
indexnode milvus-indexnode-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
mixcoord milvus-mixcoord-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
querynode milvus-querynode-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
datanode milvus-datanode-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
proxy milvus-proxy-0 <none> Running <none> <none> Jul 05,2024 17:35 UTC+0800
Resources Allocation:
COMPONENT DEDICATED CPU(REQUEST/LIMIT) MEMORY(REQUEST/LIMIT) STORAGE-SIZE STORAGE-CLASS
milvus false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
etcd false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
minio false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
proxy false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
mixcoord false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
datanode false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
indexnode false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
querynode false 1 / 1 1Gi / 1Gi data:20Gi csi-hostpath-sc
Images:
COMPONENT TYPE IMAGE
milvus milvus milvusdb/milvus:v2.3.2
etcd etcd docker.io/milvusdb/etcd:3.5.5-r2
minio minio docker.io/minio/minio:RELEASE.2022-03-17T06-34-49Z
proxy proxy milvusdb/milvus:v2.3.2
mixcoord mixcoord milvusdb/milvus:v2.3.2
datanode datanode milvusdb/milvus:v2.3.2
indexnode indexnode milvusdb/milvus:v2.3.2
querynode querynode milvusdb/milvus:v2.3.2
Show cluster events: kbcli cluster list-events -n default milvus
扩缩容
当前,KubeBlocks 支持垂直扩缩用 Milvus 集群。
执行以下命令进行垂直扩缩容。
kbcli cluster vscale milvus --cpu=1 --memory=1Gi --components=milvus
kbcli cluster vscale
命令会打印输出 opsname
。执行以下命令检查扩缩容进度:
kbcli cluster describe-ops milvus-verticalscaling-rpw2l -n default
也可通过以下命令,查看扩缩容任务是否完成。
kbcli cluster describe milvus
磁盘扩容
步骤:
kbcli cluster volume-expand milvus --storage=40Gi --components=milvus
这里需要等待几分钟,直到磁盘扩容完成。
kbcli cluster volume-expand
命令会打印输出 opsname
。执行以下命令检查磁盘扩容进度:
kbcli cluster describe-ops milvus-volumeexpansion-5pbd2 -n default
也可通过以下命令,查看磁盘扩容是否已经完成。
kbcli cluster describe milvus
重启
重启集群。
配置
--components
和--ttlSecondsAfterSucceed
的值,重启指定集群。kbcli cluster restart milvus --components="milvus" \
--ttlSecondsAfterSucceed=30--components
表示需要重启的组件名称。--ttlSecondsAfterSucceed
表示重启成功后 OpsRequest 作业的生存时间。
验证重启操作。
执行以下命令检查集群状态,并验证重启操作。
kbcli cluster list milvus
>
NAME NAMESPACE CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS CREATED-TIME
milvus default milvus-2.3.2 milvus-2.3.2 Delete Running Jul 05,2024 18:35 UTC+0800- STATUS=Updating 表示集群正在重启中。
- STATUS=Running 表示集群已重启。
停止/启动集群
你可以停止/启动集群以释放计算资源。当集群被停止时,其计算资源将被释放,也就是说 Kubernetes 的 Pod 将被释放,但其存储资源仍将被保留。如果你希望通过快照从原始存储中恢复集群资源,请重新启动该集群。
停止集群
配置集群名称,并执行以下命令来停止该集群。
kbcli cluster stop milvus
查看集群状态,确认集群是否已停止。
kbcli cluster list
启动集群
配置集群名称,并执行以下命令来启动该集群。
kbcli cluster start milvus
查看集群状态,确认集群是否已再次运行。
kbcli cluster list