跳到主要内容

使用 Milvus Operator 配置 Milvus

在生产环境中,您需要根据机器类型和工作负载为 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:分配给每个组件的计算资源。
  • tolerationsnodeSelector:K8s 集群中每个 Milvus 组件的调度规则。有关更多信息,请参阅tolerationsnodeSelector
  • env:环境变量。

如果您想配置更多字段,请参阅此处的文档

要为 Milvus 集群配置全局资源,请创建一个 milvuscluster_resource.yaml 文件。

示例

以下示例为 Milvus 集群配置全局资源。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
mode: cluster
components:
image: milvusdb/milvus:v2.1.0
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 集群包括七个组件:代理(proxy)、根协调器(root coord)、数据协调器(data coord)、查询协调器(query coord)、索引节点(index node)、数据节点(data node)和查询节点(query node)。然而,随着 Milvus 2.1.0 的发布,新增了一个名为混合协调器(mix coord)的组件。混合协调器包含所有协调器组件。因此,启动混合协调器意味着您无需安装和启动其他协调器,包括根协调器、数据协调器和查询协调器。

用于配置每个组件的常见字段包括:

  • replica:每个组件的副本数量。
  • port:每个组件的监听端口号。
  • 全局资源配置中常用的四个字段:imageenvnodeSelectortolerationsresources(见上文)。有关更多可配置字段,请单击此文档中的每个组件。

此外,在配置代理时,还有一个额外的字段称为serviceType。该字段定义了 Milvus 在 K8s 集群中提供的服务类型。

要为特定组件配置资源,请首先在spec.componets下的字段中添加组件名称,然后配置其私有资源。

PurposeParameters
Performance tuning
Data and meta
Administration
Quota and Limits

下面的示例配置了milvuscluster.yaml文件中代理和数据节点的副本和计算资源。

apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
mode: cluster
components:
image: milvusdb/milvus:v2.1.0
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: {}

这个示例不仅配置了全局资源,还为根协调器和代理配置了私有计算资源。使用此配置文件启动 Milvus 集群时,私有资源配置将应用于根协调器和代理,而其余组件将遵循全局资源配置。

运行以下命令应用新配置:

kubectl apply -f milvuscluster.yaml

接下来的步骤