使用 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
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 地址。
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
离线安装
如果处于网络受限的环境,请按照本节的步骤启动 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 备份,一个用于 Milvus 数据备份的开源工具。
探索Birdwatcher,用于调试 Milvus 和动态配置更新的开源工具。
探索Attu,一款用于直观管理 Milvus 的开源图形用户界面工具。