使用 Helm 在 Kubernetes 中运行 Milvus
本页说明如何使用Milvus Helm 图表在 Kubernetes 中启动 Milvus 实例。
概述
Helm 使用一种称为图表的打包格式。图表是描述一组相关 Kubernetes 资源的文件 Collections。Milvus 提供了一组图表,可帮助您部署 Milvus 依赖项和组件。
前提条件
安装StorageClass。您可以按以下步骤检查已安装的 StorageClass。
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false
安装前检查硬件和软件要求。
安装 Milvus 之前,建议使用Milvus 大小工具,根据数据大小估算硬件需求。这有助于确保 Milvus 安装的最佳性能和资源分配。
如果您在绘制图像时遇到任何问题,请通过community@zilliz.com联系我们,并提供有关问题的详细信息,我们将为您提供必要的支持。
安装 Milvus Helm 图表
在安装 Milvus Helm 图表之前,您需要添加 Milvus Helm 资源库。
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
位于https://github.com/milvus-io/milvus-helm
的 Milvus Helm Charts 软件仓库已经存档,您可以从https://github.com/zilliztech/milvus-helm
获取进一步更新,具体如下:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
归档软件源仍可用于 4.0.31 之前的图表。对于以后的版本,请使用新版本库。
然后从软件源中获取 Milvus 图表,如下所示:
$ helm repo update
你可以随时运行此命令获取最新的 Milvus Helm 图表。
在线安装
1.部署 Milvus 集群
安装好 Helm 图表后,就可以在 Kubernetes 上启动 Milvus 了。本节将指导你完成启动 Milvus 的步骤。
$ helm install my-release milvus/milvus
在上述命令中,my-release
是版本名称,milvus/milvus
是本地安装的图表版本库。要使用其他名称,请将my-release
替换为您认为合适的名称。
上述命令使用默认配置部署 Milvus 群集及其组件和依赖项。要自定义这些设置,我们建议你使用Milvus 大小调整工具,根据实际数据大小调整配置,然后下载相应的 YAML 文件。要了解有关配置参数的更多信息,请参阅Milvus 系统配置检查表。
- 版本名称只能包含字母、数字和破折号。版本名称中不允许使用点。
- 在使用 Helm 安装 Milvus 时,默认命令行会安装群集版本的 Milvus。独立安装 Milvus 时需要进一步设置。
- 根据Kubernetes 过时的 API 迁移指南,自 v1.25 起,PodDisruptionBudget 的policy/v1beta1API 版本不再提供服务。建议迁移清单和 API 客户端,改用policy/v1API 版本。
对于仍在 Kubernetes v1.25 及更高版本上使用 PodDisruptionBudget 的policy/v1beta1API 版本的用户,作为一种变通方法,您可以运行以下命令来安装 Milvus:
helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
- 更多信息请参见Milvus Helm Chart和Helm。
2.检查 Milvus 集群状态
运行以下命令检查 Milvus 集群中所有 pod 的状态。
$ kubectl get pods
一旦所有 pod 都在运行,上述命令的输出应与下图类似:
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 3m23s
my-release-etcd-1 1/1 Running 0 3m23s
my-release-etcd-2 1/1 Running 0 3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm 1/1 Running 0 3m23s
my-release-milvus-indexnode-5c5f7b5bd9-l8hjg 1/1 Running 0 3m24s
my-release-milvus-mixcoord-7fb9488465-dmbbj 1/1 Running 0 3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv 1/1 Running 0 3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg 1/1 Running 0 3m24s
my-release-minio-0 1/1 Running 0 3m23s
my-release-minio-1 1/1 Running 0 3m23s
my-release-minio-2 1/1 Running 0 3m23s
my-release-minio-3 1/1 Running 0 3m23s
my-release-pulsar-autorecovery-86f5dbdf77-lchpc 1/1 Running 0 3m24s
my-release-pulsar-bookkeeper-0 1/1 Running 0 3m23s
my-release-pulsar-bookkeeper-1 1/1 Running 0 98s
my-release-pulsar-broker-556ff89d4c-2m29m 1/1 Running 0 3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-0 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-metadata-98zbr 0/1 Completed 0 3m24s
您还可以访问 Milvus WebUI(网址:http://127.0.0.1:9091/webui/
),了解有关 Milvus 实例的更多信息。有关详细信息,请参阅Milvus WebUI。
3.将本地端口转发给 Milvus
运行以下命令获取 Milvus 集群的服务端口。
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
输出结果显示 Milvus 实例的默认端口为19530。
如果以独立模式部署了 Milvus,请将 pod 名称从my-release-milvus-proxy-xxxxxxxxxx-xxxxx
更改为my-release-milvus-xxxxxxxxxx-xxxxx
。
然后,运行以下命令将本地端口转发到 Milvus 服务的端口。
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
可以选择在上述命令中使用:19530
而不是27017:19530
,让kubectl
为你分配一个本地端口,这样你就不必管理端口冲突了。
默认情况下,kubectl 的端口转发只监听localhost
。如果想让 Milvus 监听所选或所有 IP 地址,请使用address
标志。以下命令将使端口转发监听主机上的所有 IP 地址。
访问 Milvus WebUI
Milvus 有一个内置的 GUI 工具,称为 Milvus WebUI,可以通过浏览器访问。Milvus Web UI 采用简单直观的界面,增强了系统的可观察性。你可以使用 Milvus Web UI 观察 Milvus 组件和依赖关系的统计和指标,检查数据库和 Collections 的详细信息,并列出详细的 Milvus 配置。有关 Milvus Web UI 的详细信息,请参阅Milvus WebUI。
要启用对 Milvus Web UI 的访问,需要将代理 pod 的端口转发到本地端口。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
现在,你可以通过http://localhost:27018
访问 Milvus Web UI。
离线安装
如果您处于网络受限的环境,请按照本节的步骤启动 Milvus 集群。
1.获取 Milvus 清单
运行以下命令获取 Milvus 清单。
$ helm template my-release milvus/milvus > milvus_manifest.yaml
上述命令会渲染 Milvus 群集的图表模板,并将输出保存到名为milvus_manifest.yaml
的清单文件中。使用此清单,你可以在单独的 pod 中安装 Milvus 群集及其组件和依赖项。
- 要在独立模式下安装 Milvus 实例(所有 Milvus 组件都包含在一个 pod 中),应改成运行
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsar.enabled=false milvus/milvus > milvus_manifest.yaml
,为独立模式下的 Milvus 实例渲染图表模板。 - 要更改 Milvus 配置,请下载
value.yaml
模板,将所需设置放入其中,然后使用helm template -f values.yaml my-release milvus/milvus > milvus_manifest.yaml
渲染相应的清单。
2.下载图像提取脚本
图像提取脚本是用 Python 开发的。您应在requirement.txt
文件中下载脚本及其依赖项。
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py
3.提取并保存图像
运行以下命令提取并保存所需的图像。
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
图像会被提取到当前目录下名为images
的子文件夹中。
4.加载图像
现在,您可以在网络受限环境中将图像加载到主机上,具体操作如下:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5.部署 Milvus
$ kubectl apply -f milvus_manifest.yaml
到此为止,你可以按照在线安装的步骤2和3检查群集状态,并将本地端口转发给 Milvus。
升级运行中的 Milvus 群集
运行以下命令将正在运行的 Milvus 群集升级到最新版本:
$ helm repo update
$ helm upgrade my-release zilliztech/milvus
卸载 Milvus
运行以下命令卸载 Milvus。
$ helm uninstall my-release
下一步
在 Docker 中安装 Milvus 后,你可以
查看Hello Milvus,了解 Milvus 的功能。
了解 Milvus 的基本操作:
在云上部署你的 Milvus 集群:
探索Milvus WebUI,一个用于 Milvus 可观察性和管理的直观 Web 界面。
探索Milvus 备份,一个用于 Milvus 数据备份的开源工具。
探索Birdwatcher,用于调试 Milvus 和动态配置更新的开源工具。
探索Attu,一个用于直观管理 Milvus 的开源图形用户界面工具。