使用 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 image。resources:分配给各组件的计算资源。tolerations和nodeSelector:Kubernetes 集群中的组件调度规则。详情参见 Kubernetes 文档中的 Taints and Tolerations 和 Assigning Pods to Nodes。env:传递给组件的环境变量。
更多字段请参阅 ComponentSpec API 文档。
要配置 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
如果 Kubernetes 集群中有名为 my-release 的 Milvus 集群,则将根据配置文件更新集群资源。否则,将创建一个新的 Milvus 集群。
配置组件专用资源
Milvus 2.0 集群最初由七个组件组成:Proxy、RootCoord、DataCoord、QueryCoord、IndexNode、DataNode 和 QueryNode。Milvus 2.1.0 引入了 MixCoord,它整合了所有 Coordinator 组件。启用 MixCoord 后,无需再单独部署 RootCoord、DataCoord 和 QueryCoord。
配置单个组件时常用以下字段:
replicas:每个组件的副本数量。port:每个组件的监听端口号。- 上述全局资源配置项:
image、env、nodeSelector、tolerations和resources。其他可配置字段请参阅 MilvusComponents API 文档。
配置 Proxy 时还可设置 serviceType,用于指定 Milvus 在 Kubernetes 集群中暴露的 Service 类型。
要为特定组件配置资源,请先在 spec.components 下添加组件名称,再配置该组件的专用资源。
示例
以下示例在 milvuscluster.yaml 中配置全局资源,并为 RootCoord 和 Proxy 设置组件专用资源。
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: {}
该配置同时定义全局资源以及 RootCoord 和 Proxy 的组件专用资源。启动集群时,RootCoord 和 Proxy 使用专用配置,其余组件使用全局配置。
运行以下命令应用新配置:
kubectl apply -f milvuscluster.yaml
下一步
- 了解如何使用 Milvus Operator 管理以下 Milvus 依赖项:
- 使用 Milvus Operator 配置 Object Storage
- 使用 Milvus Operator 配置 Meta storage
- 使用 Milvus Operator 配置消息存储