使用 Helm 在 Kubernetes 中运行 Milvus
本页面介绍了如何使用Milvus Helm 图表在 Kubernetes 中启动 Milvus 实例。
概述
Helm 使用一种称为“图表”(charts)的打包格式。图表是一组文件的 Collection,用于描述一组相关的 Kubernetes 资源。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 zilliztech https://zilliztech.github.io/milvus-helm/
位于https://github.com/milvus-io/milvus-helm 的 Milvus Helm Charts 仓库现已归档。我们现在使用新仓库https://github.com/zilliztech/milvus-helm 。归档的仓库仍可提供 4.0.31 及更早版本的图表,但后续版本请使用新仓库。
然后按以下方式从仓库获取 Milvus Helm Charts:
$ helm repo update
您可以随时运行以下命令来获取最新的 Milvus Helm Charts。
在线安装
1. 部署 Milvus 集群
安装 Helm 图表后,您即可在 Kubernetes 上启动 Milvus。本节将指导您部署 Milvus 集群。
需要独立部署吗?
如果您希望以独立模式(单节点)部署 Milvus 用于开发或测试,请使用以下命令:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.19 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
注意:独立模式默认使用 Woodpecker 作为消息队列,并启用 Streaming Node 组件。详情请参阅《架构概述》和《使用 Woodpecker》。
部署 Milvus 集群:
以下命令将部署一个针对 v2.6.19 进行过优化设置的 Milvus 集群,并使用 Woodpecker 作为推荐的消息队列:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.19 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
该命令的作用:
- 使用Woodpecker作为消息队列(推荐使用,可减少维护工作)
- 启用新的流式节点组件以提升性能
- 禁用旧版索引节点(其功能现由数据节点处理)
- 禁用 Pulsar,转而使用 Woodpecker
Milvus 2.6.x 中的架构变更:
- 消息队列:现推荐使用Woodpecker(与 Pulsar 相比可减少基础设施维护工作)
- 新组件:引入流式处理节点(Streaming Node),并默认启用
- 组件合并:索引节点和数据节点合并为单一的数据节点
有关完整的架构详情,请参阅《架构概述》。
其他消息队列选项:
如果您更倾向于使用Pulsar(传统选择)而非 Woodpecker:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.19 \
--set streaming.enabled=true \
--set indexNode.enabled=false
后续步骤: 上述命令将按推荐配置部署 Milvus。若用于生产环境:
- 请使用Milvus 容量规划工具,根据您的数据规模优化设置
- 请查阅《Milvus 系统配置检查清单》以了解高级配置选项
重要注意事项:
-
版本命名:仅使用字母、数字和连字符(不允许使用点)
-
Kubernetes v1.25 及以上版本:若遇到 PodDisruptionBudget 相关问题,请使用以下解决方法:
helm install my-release zilliztech/milvus \
--set pulsar.bookkeeper.pdb.usePolicy=false \
--set pulsar.broker.pdb.usePolicy=false \
--set pulsar.proxy.pdb.usePolicy=false \
--set pulsar.zookeeper.pdb.usePolicy=false
如需更多信息,请参阅Milvus Helm 图表和Helm 文档。
2. 检查 Milvus 集群状态
通过检查 Pod 状态来验证部署是否成功:
kubectl get pods
**等待所有 Pod 显示“Running”状态。**采用 v2.6.19 配置时,您应看到类似以下的 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-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-milvus-streaming-node-xxxxxxxxx 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 组件:
mixcoord、datanode、querynode、proxy、streaming-node - 依赖项:
etcd(元数据)、minio(对象存储)、pulsar(消息队列)
设置好端口转发后(参见下一步),您还可以通过http://127.0.0.1:9091/webui/ 访问Milvus WebUI。详情请参阅Milvus WebUI。
3. 连接到 Milvus
若要在 Kubernetes 外部连接到您的 Milvus 集群,您需要设置端口转发。
设置端口转发:
kubectl port-forward service/my-release-milvus 27017:19530
此命令将您的本地端口27017 转发至 Milvus 端口19530 。您应看到:
Forwarding from 127.0.0.1:27017 -> 19530
连接详情:
- 本地连接:
localhost:27017 - Milvus 默认端口:
19530
端口转发选项:
-
自动分配本地端口:使用
:19530代替27017:19530,让 kubectl 选择一个可用端口 -
监听所有接口:添加
--address 0.0.0.0以允许其他机器建立连接:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 -
独立部署:若使用独立模式,服务名称保持不变
使用 Milvus 时请保持此终端窗口打开。现在,您可以使用任何 Milvus SDK 通过localhost:27017 连接到 Milvus。
(可选)更新 Milvus 配置
您可以通过编辑values.yaml 文件并重新应用,来更新 Milvus 集群的配置。
-
创建一个包含所需配置的
values.yaml文件。以下内容假设您希望启用
proxy.http。extraConfigFiles:
user.yaml: |+
proxy:
http:
enabled: true有关适用的配置项,请参阅“系统配置”。
-
应用
values.yaml文件。
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
-
检查更新后的配置。
helm get values my-release输出应显示已更新的配置。
访问 Milvus WebUI
Milvus 随附了一个名为 Milvus WebUI 的内置图形化用户界面工具,您可以通过浏览器访问该工具。Milvus WebUI 通过简单直观的界面增强了系统的可观察性。您可以使用 Milvus WebUI 观察 Milvus 组件和依赖项的统计数据与指标,查看数据库和 Collection 的详细信息,并列出详细的 Milvus 配置。 有关 Milvus WebUI 的详细信息,请参阅Milvus WebUI
要启用对 Milvus WebUI 的访问,您需要将代理 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 WebUI。
离线安装
如果您处于网络受限的环境中,请按照本节中的步骤启动 Milvus 集群。
1. 获取 Milvus 清单
运行以下命令获取 Milvus 配置文件。
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
上述命令会为 Milvus 集群生成图表模板,并将输出保存到名为milvus_manifest.yaml 的清单文件中。使用此清单,您可以安装一个 Milvus 集群,其组件和依赖项将分别位于不同的 Pod 中。
- 若要在独立模式下安装 Milvus 实例(即所有 Milvus 组件均包含在单个 Pod 中),则应运行
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml,以生成独立模式下 Milvus 实例的图表模板。 - 若要修改 Milvus 配置,请下载
value.yaml模板,在其中填写所需设置,然后使用helm template -f values.yaml my-release zilliztech/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 --reset-then-reuse-values
卸载 Milvus
运行以下命令以卸载 Milvus。
$ helm uninstall my-release
下一步
在 Docker 中安装 Milvus 后,您可以:
-
查看“Hello Milvus”以了解 Milvus 的功能。
-
学习 Milvus 的基本操作:
-
在云端部署您的 Milvus 集群:
-
探索Milvus WebUI——一个用于 Milvus 可观测性和管理的直观 Web 界面。
-
探索Milvus Backup——一款用于 Milvus 数据备份的开源工具。
-
了解Birdwatcher——一款用于调试 Milvus 并动态更新配置的开源工具。
-
探索Attu——一款用于直观管理 Milvus 的开源图形用户界面工具。