使用 Milvus Operator 配置 Milvus
在生产环境中,您需要根据机器类型和工作负载为 Milvus 群集分配资源。您可以在部署时进行配置,也可以在群集运行时更新配置。
本主题介绍如何在使用 Milvus Operator 安装 Milvus 群集时对其进行配置。
本主题假设您已部署 Milvus Operator。有关详细信息,请参阅部署 Milvus Operator。
使用 Milvus Operator 配置 Milvus 群集包括:
- 全局资源配置
- 专用资源配置
私有资源配置将覆盖全局资源配置。如果您在配置全局资源的同时指定了某个组件的私有资源,该组件将优先响应私有配置。
配置全局资源
使用 Milvus Operator 启动 Milvus 群集时,需要指定配置文件。这里的示例使用的是默认配置文件。
kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
配置文件的详细信息如下:
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
mode: cluster
dependencies: {}
components: {}
config: {}
字段spec.components 包括所有 Milvus 组件的全局和私有资源配置。以下是配置全局资源的四个常用字段。
image:使用的 Milvus docker 映像。resources:分配给每个组件的计算资源。tolerations和nodeSelector:K8s 集群中每个 Milvus 组件的调度规则。更多信息,请参阅容忍度和节点选择器。env:环境变量。
如需配置更多字段,请参阅此处的文档。
要配置 Milvus 集群的全局资源,请创建milvuscluster_resource.yaml 文件。
示例
下面的示例为 Milvus 群集配置了全局资源。
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
mode: cluster
components:
nodeSelector: {}
tolerations: {}
env: {}
resources:
limits:
cpu: '4'
memory: 8Gi
requests:
cpu: 200m
memory: 512Mi
运行以下命令应用新配置:
kubectl apply -f milvuscluster_resource.yaml
如果 K8s 集群中有名为my-release 的 Milvus 集群,则会根据配置文件更新集群资源。否则,将创建一个新的 Milvus 群集。
配置私有资源
最初在 Milvus 2.0 中,一个 Milvus 群集包括七个组件:代理、Root coord、数据 coord、Query coord、索引节点、数据节点和查询节点。不过,随着 Milvus 2.1.0 一起发布的还有一个新的组件--混合协调器。混合协调器包括所有协调器组件。因此,启动混合协调器意味着不需要安装和启动其他协调器,包括 Root 协调器、Data 协调器和 Query 协调器。
用于配置各组件的常用字段包括
replica:每个组件的副本数量。port:每个组件的监听端口号。- 全局资源配置中常用的四个字段:
image,env,nodeSelector,tolerations,resources(见上文)。有关更多可配置字段,请单击本文档中的每个组件。
此外,在配置代理时,还有一个名为 "服务类型 "的额外字段。该字段定义了 Milvus 在 K8s 集群中提供的服务类型。
要为特定组件配置资源,请先在spec.componets 下的字段中添加组件名称,然后配置其私有资源。
| 依赖项 | 组件 |
|---|---|
|
- Root coord
- 代理
- Query coord
- 查询节点
- 索引节点
- 数据坐标
- 数据节点
- 本地存储
- 日志
- 信息通道
- 通用
- 图形处理器
- GRPC
- 索引坐标
- 元存储
- 消息队列
- Tikv
- 跟踪
- 配额和限制
|
| 用途 | 参数 |
|---|---|
| 性能调整 |
queryNode.gracefulTimerootCoord.minSegmentSizeToEnableIndexdataCoord.segment.maxSizedataCoord.segment.sealProportiondataNode.flush.insertBufSizequeryCoord.autoHandoffqueryCoord.autoBalancelocalStorage.enabled
| | 数据和元 |
common.retentionDurationrocksmq.retentionTimeInMinutesdataCoord.enableCompactiondataCoord.enableGarbageCollectiondataCoord.gc.dropTolerance
| | 管理 |
| | 配额和限制 |
quotaAndLimits.limits.maxCollectionNumPerDBquotaAndLimits.ddl.enabledquotaAndLimits.ddl.collectionRatequotaAndLimits.ddl.partitionRatequotaAndLimits.indexRate.enabledquotaAndLimits.indexRate.maxquotaAndLimits.flushRate.enabledquotaAndLimits.flush.maxquotaAndLimits.compation.enabledquotaAndLimits.compaction.maxquotaAndLimits.dml.enabledquotaAndLimits.dml.insertRate.maxquotaAndLimits.dml.insertRate.collection.maxquotaAndLimits.dml.deleteRate.maxquotaAndLimits.dml.deleteRate.collection.maxquotaAndLimits.dql.enabledquotaAndLimits.dql.searchRate.maxquotaAndLimits.dql.searchRate.collection.maxquotaAndLimits.dql.queryRate.maxquotaAndLimits.dql.queryRate.collection.maxquotaAndLimits.limitWriting.ttProtection.enabledquotaAndLimits.limitWriting.ttProtection.maxTimeTickDelayquotaAndLimits.limitWriting.memProtection.enabledquotaAndLimits.limitWriting.memProtection.dataNodeMemoryLowWaterLevelquotaAndLimits.limitWriting.memProtection.queryNodeMemoryLowWaterLevelquotaAndLimits.limitWriting.memProtection.dataNodeMemoryHighWaterLevelquotaAndLimits.limitWriting.memProtection.queryNodeMemoryHighWaterLevelquotaAndLimits.limitWriting.diskProtection.enabledquotaAndLimits.limitWriting.diskProtection.diskQuotaquotaAndLimits.limitWriting.diskProtection.diskQuotaPerCollectionquotaAndLimits.limitWriting.forceDenyquotaAndLimits.limitReading.queueProtection.enabledquotaAndLimits.limitReading.queueProtection.nqInQueueThresholdquotaAndLimits.limitReading.queueProtection.queueLatencyThresholdquotaAndLimits.limitReading.resultProtection.enabledquotaAndLimits.limitReading.resultProtection.maxReadResultRatequotaAndLimits.limitReading.forceDeny
|
示例
下面的示例在milvuscluster.yaml 文件中配置了代理和数据节点的副本和计算资源。
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
mode: cluster
components:
resources:
limits:
cpu: '4'
memory: 8Gi
requests:
cpu: 200m
memory: 512Mi
rootCoord:
replicas: 1
port: 8080
resources:
limits:
cpu: '6'
memory: '10Gi'
dataCoord: {}
queryCoord: {}
indexCoord: {}
dataNode: {}
indexNode: {}
queryNode: {}
proxy:
replicas: 1
serviceType: ClusterIP
resources:
limits:
cpu: '2'
memory: 4Gi
requests:
cpu: 100m
memory: 128Mi
config: {}
dependencies: {}
该示例不仅配置了全局资源,还配置了 Root coord 和代理的私有计算资源。使用此配置文件启动 Milvus 群集时,私有资源配置将应用于根协调器和代理,而其余组件将遵循全局资源配置。
运行以下命令应用新配置:
kubectl apply -f milvuscluster.yaml
下一步
- 了解如何使用 Milvus Operator 管理以下 Milvus 依赖项: