kubernetes部署milvus

这篇具有很好参考价值的文章主要介绍了kubernetes部署milvus。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

milvus介绍

Milvus创建于2019年,其唯一目标是存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的大量嵌入向量。
嵌入向量数据库Milvus是一种专门为处理输入向量查询而设计的数据库,能够在万亿规模上对向量进行索引。与传统的关系数据库不同,Milvus主要按照预定义的模式处理结构化数据。这种数据库的设计理念注重自下而上,适用于处理从非结构化数据转换而来的嵌入向量。Milvus的出现为处理大规模向量数据提供了一种全新的解决方案。
随着互联网的快速发展和演变,我们每天都会产生大量的非结构化数据,包括电子邮件、学术论文、物联网传感器数据、社交媒体照片、蛋白质结构等等。这些数据对于人工智能和数据分析来说非常重要,但它们的结构复杂且无规律,难以被计算机直接理解和处理。
为了解决这个问题,我们可以使用嵌入技术,将这些非结构化数据转换为具有固定长度的向量,以便计算机可以对其进行处理和分析。这些向量可以代表原始数据在多维空间中的位置,并且可以通过计算两个向量之间的相似距离来分析它们之间的相关性。
Milvus是一款开源的向量搜索引擎,可以用于存储和索引这些嵌入向量。它能够通过计算两个向量的余弦相似度来分析它们之间的相关性,并根据相似度对结果进行排序。这使得我们可以快速地找到与给定数据相似的其他数据,从而更好地理解和分析这些非结构化数据。
Milvus 作为一款针对海量特征向量的相似度搜索引擎,在单台服务器上就可以处理十亿级数据规模。而对于百亿或者千亿级数据,则需要具有水平扩展能力的 Milvus 集群来满足对海量向量数据的高性能检索需求。
使用 Mishards 中间件来搭建 Milvus 集群。Mishards 是一个用 Python 开发的 Milvus 集群分片中间件,其内部处理请求转发、读写分离和水平扩展,为用户提供内存和算力可以扩容的 Milvus 实例。

部署milvus

使用helm和kubectl方式来部署milvus集群,最后通过在集群外部访问 Milvus 服务测试集群。集群包含 2 个 Milvus 实例(1 个可读实例,1 个可写实例)、1 个 MySQL 实例和 1 个 Mishards。

部署storageclass

为什么需要共享存储

容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。首先,当容器崩溃时,kubectl 将重新启动容器,容器中的文件将会丢失。其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。Kubernetes 抽象出 Volume 对象来解决这两个问题。
但是,当一个 Pod 不再存在时,Volume 也将不再存在。因此,Kubernetes 引入了 Persistent Volumes (PV)。PV 是集群中一块已经由管理员配置或使用 StorageClass 动态配置的存储。此 API 对象包含存储实现的细节,即 NFS、iSCSI 或特定于云供应商的共享存储系统。Kubernetes 通过网络访问的共享文件系统,不仅可以更加可靠地存储来保存应用产生的重要数据,还可以实现 Pod 之间数据共享。
下面开始部署storageclass

  1. 为了共享数据,PV 访问模式必须被设置为 ReadOnlyMany 或 ReadWriteMany。
    2.文件存储可以根据自己的情况来进行选择,我这边选择的是NFS来作为文件存储。
部署流程

我这边参照的官网的方式直接使用helm来部署了。

1、拉取源码:
git clone https://github.com/helm/charts.git 
cd charts/stable/nfs-client-provisioner

配置文件下载完成后,需要将 values.yaml 文件中的 server 参数改为共享存储服务器的 IP 地址,将 path 参数改为共享存储目录。此外,由 StorageClass 动态创建的 PersistentVolume 将使用 mountOptions 字段指定的挂载选项。

2. 安装 NFS client chart:
helm install nfs-client .

NFS Client Provisioner 是用于自动创建 Kubernetes PV 的自动化插件。它可以根据已配置好的 NFS Server,自动创建 Kubernetes PV。

3. 检查部署状态:
helm list
4. 通过 watch 指令检查是否部署成功:
watch kubectl get po -l app=nfs-client-provisioner
5. 查看当前 StorageClass:
kubectl get storageclass

部署 Milvus 集群

1、使用helm部署milvus
1、拉取源码:
git clone -b 指定分支 https://github.com/milvus-io/milvus-helm.git 
cd milvus-helm

需要将valus.yaml文件里的storageClass的名字修改成在上面步骤中部署的storageclass的名字

2、部署 Milvus:
helm install --set cluster.enabled=true --set persistence.enabled=true --set mysql.enabled=true my-release  .
3、查看 Milvus release 是否安装成功:
helm list

此时,Milvus 服务已成功部署到 Kubernetes 上。但是,Kubernetes 的默认服务为 ClusterIP,集群内的其它应用可以访问该服务,而集群外部无法进行访问。所以,如果我们想在 Internet 或者生产环境中使用集群,我们需要更换 Service 以暴露应用。Kubernetes 的两种可以暴露服务的 Service 类型为:NodePort 和 LoadBalancer。我这边使用NodePort来暴露服务。

vim vales.yaml

service:
  type: NodePort
  port: 19530
  annotations: {}
  labels: {}
更新milvus release
helm upgrade --set cluster.enabled=true --set persistence.enabled=true --set mysql.enabled=true my-release --set web.enabled=true  .
2、使用kubectl部署milvus

利用 kubectl 部署应用的实质是部署 YAML 或 JSON 文件中定义的内容。因此需要利用 Go 安装 schelm 插件。通过 schelm 插件获得 manifest 文件,它们即为 Kubernetes 可以识别的 YAML 格式的资源描述。

1、拉取源码:
git clone -b 指定分支 https://github.com/milvus-io/milvus-helm.git 
cd milvus-helm
2. 下载并解压 Go:
wget https://studygolang.com/dl/golang/go1.20.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.20.6.linux-amd64.tar.gz
3. 在 /etc/profile 或者 HOME/.profile 添加环境变量:
export PATH=$PATH:/usr/local/go/bin
4. 安装 schelm 插件:
go get -u github.com/databus23/schelm 
5. 获取 Milvus 的 manifest 文件:
helm install --dry-run --debug --set cluster.enabled=true --set persistence.enabled=true --set mysql.enabled=true my-release  . | ~/go/bin/schelm output/
6. 将配置文件应用到 Pod:
cd output/milvus/ 
kubectl apply -f templates/ 
cd /charts/mysql/ 
kubectl apply -f templates/

如果出现格式转换错误,请修改对应的 YAML 文件。文章来源地址https://www.toymoban.com/news/detail-635263.html

7. 查看 Pods 是否启动成功:
kubectl get pods

到了这里,关于kubernetes部署milvus的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ModaHub魔搭社区:AI原生云向量数据库MIlvus Cloud的倒置文件索引?

    目录 VF 总结 平面索引很不错,但它无法扩展。这就是向量搜索的数据结构发挥作用的地方。通过牺牲准确性来减少运行时间,以便显著提高查询速度和吞吐量。现在有很多索引策略,其中最常用的是倒置文件索引(IVF)。 抛开花哨的名字,IVF 实际上是相当简单的。IVF 通过

    2024年02月16日
    浏览(49)
  • 【云原生|Kubernetes】02-Kubeadm安装部署Kubernetes集群

    前面简单介绍了Kubernetes的相关架构及其组件,这一章节我们将介绍如何快速搭建Kubernetes的集群,这里我们将使用官方支持的用于部署 Kubernetes 的工具— kubeadm。 主机名 ip地址 节点类型 系统版本 master.example.com 192.168.194.128 master,etcd centos7.x node1.example.com 192.168.194.130 node1 cent

    2024年02月03日
    浏览(46)
  • 【云原生】Kubeadmin部署Kubernetes集群

    目录 ​编辑 一、环境准备 1.2调整内核参数 二、所有节点部署docker 三、所有节点安装kubeadm,kubelet和kubectl 3.1定义kubernetes源 3.2开机自启kubelet 四、部署K8S集群 4.1查看初始化需要的镜像 4.2在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录 4.3复制镜像和脚本到 node 节点,并在 nod

    2024年02月09日
    浏览(37)
  • 【云原生丶Kubernetes】从应用部署的发展看Kubernetes的前世今生

    在了解 Kubernetes 之前,我们十分有必要先了解一下应用程序部署的发展历程,下面让我们一起来看看! 我们先来看看应用程序部署的3个阶段:从物理机部署到虚拟机部署,再到容器化部署,他们之间有何优劣势呢? 1、物理机部署 :多个应用进程部署在同一个物理机上,但

    2024年02月12日
    浏览(39)
  • 【云原生|探索 Kubernetes 系列 5】简化 Kubernetes 的部署,深入解析其工作流程

    大家好,我是秋意零。 在前面 4 个章节中,我们充分了解了容器技术和 Kubernes 原生时代引擎的架构和设计思想,今天分享的主要内容是,探索 Kubernetes 部署,深入解析其工作流程 👿 简介 🏠 个人主页 : 秋意零 🧑 个人介绍 :在校期间参与众多云计算相关比赛,如:🌟

    2024年02月06日
    浏览(53)
  • 云原生之在kubernetes集群下部署Mysql应用

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而加快了访问速度并提高了灵活性。MySQL 使用了标准的 SQL 语言形式。支持大型的数据库,可

    2024年02月12日
    浏览(44)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

    前面利用kubekey部署了一个简单的非高可用,etcd单实例的kubernetes集群,经过研究,发现部署过程可以简化,省去了一部分下载过程(主要是下载kubernetes组件的过程)只是kubernetes版本会固定在1.22.16版本,etcd集群可以部署成生产用的外部集群,并且apiserver等等组件也是高可用,

    2024年02月15日
    浏览(50)
  • 云原生|kubernetes|rancher-2.6.4安装部署简明手册

    rancher是一个比较特殊的开源的kubernetes管理工具,特殊在它是一个名称为k3s的简单kubernetes集群,而该集群是在kubernetes集群内的。 rancher还可以在一个裸的仅具有docker环境的机器部署,然后通过该机器将其它的kubernetes集群纳入rancher管理(简称纳管),或者是通过该机器快速的

    2023年04月26日
    浏览(36)
  • 【云原生、k8s】管理Kubernetes应用搭建与部署

    官方提供Kubernetes部署3种方式 (一)minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方文档:https://kubernetes.io/docs/setup/minikube/ (二)二进制包 从官方下载发行版的二进制包,手动部署每个组件,

    2024年01月21日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包