跳到主要内容

使用 Milvus Operator 配置依赖项

Milvus 集群依赖于包括对象存储、etcd 和 Pulsar 在内的组件。本主题介绍在使用 Milvus Operator 安装 Milvus 时如何配置这些依赖项。

本主题假设您已部署 Milvus Operator。

更多信息请参见 部署 Milvus Operator

您需要指定一个配置文件来使用 Milvus Operator 启动 Milvus 集群。

kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvuscluster_default.yaml

您只需要编辑 milvuscluster_default.yaml 中的代码模板来配置第三方依赖项。以下部分分别介绍如何配置对象存储、etcd 和 Pulsar。

配置对象存储

Milvus 集群使用 MinIO 或 S3 作为对象存储来持久化大规模文件,如索引文件和二进制日志。在 spec.dependencies.storage 下添加必需的字段来配置对象存储。

storage 支持 externalinCluster

外部对象存储

external 表示使用外部对象存储服务。

用于配置外部对象存储服务的字段包括:

  • external:值为 true 表示 Milvus 使用外部存储服务。
  • type:指定 Milvus 使用 S3 或 MinIO 作为对象存储。
  • secretRef:对象存储服务使用的密钥引用。
  • endpoint:对象存储服务的端点。

示例

以下示例配置外部对象存储服务。

kind: Milvus

metadata:

name: my-release

labels:

app: milvus

spec:

dependencies: # Optional

storage: # Optional

# Whether (=true) to use an existed external storage as specified in the field endpoints or

# (=false) create a new storage inside the same kubernetes cluster for milvus.

external: true # Optional default=false

type: "MinIO" # Optional ("MinIO", "S3") default:="MinIO"

# Secret reference of the storage if it has

secretRef: mySecret # Optional

# The external storage endpoint if external=true

endpoint: "storageEndpoint"

components: {}

config: {}

内部对象存储

inCluster 表示当 Milvus 集群启动时,集群中会自动启动一个 MinIO 服务。

Milvus 集群仅支持使用 MinIO 作为内部对象存储服务。

示例

以下示例配置内部 MinIO 服务。

apiVersion: milvus.io/v1alpha1

kind: Milvus

metadata:

name: my-release

labels:

app: milvus

spec:

dependencies:

storage: #

external: false

type: "MinIO" # Optional ("MinIO", "S3") default:="MinIO"

inCluster:

# deletionPolicy of storage when the milvus cluster is deleted

deletionPolicy: Retain # Optional ("Delete", "Retain") default="Retain"

# When deletionPolicy="Delete" whether the PersistantVolumeClaim shoud be deleted when the storage is deleted

pvcDeletion: false

values:

resources:

limits:

cpu: '2'

memory: 6Gi

requests:

cpu: 100m

memory: 512Mi

statefulset:

replicaCount: 6

components: {}

config: {}
在此示例中,inCluster.deletionPolicy 定义了数据的删除策略。inCluster.values.resources 定义了 MinIO 使用的计算资源。inCluster.values.statefulset.replicaCount 定义了每个驱动器上 MinIO 的副本数量。
values.yaml 中查找配置内部 MinIO 服务的完整配置项。根据需要在 storage.inCluster.values 下添加配置项,如前面的示例所示。

假设配置文件名为 milvuscluster.yaml,运行以下命令以应用配置。

kubectl apply -f milvuscluster.yaml
如果 my-release 是一个现有的 Milvus 集群,milvuscluster.yaml 会覆盖其配置。否则,将创建一个新的 Milvus 集群。

配置 etcd

etcd 存储 Milvus 集群中组件的元数据。在 spec.dependencies.etcd 下添加必需的字段来配置 etcd。

etcd 支持 externalinCluster

用于配置外部 etcd 服务的字段包括:

  • external:值为 true 表示 Milvus 使用外部 etcd 服务。
  • endpoints:etcd 的端点。

外部 etcd

示例

以下示例配置外部 etcd 服务。

kind: Milvus

metadata:

name: my-release

labels:

app: milvus


spec:

dependencies: # Optional

etcd: # Optional

# Whether (=true) to use an existed external etcd as specified in the field endpoints or

# (=false) create a new etcd inside the same kubernetes cluster for milvus.

external: true # Optional default=false

# The external etcd endpoints if external=true

endpoints:

- 192.168.1.1:2379

components: {}

config: {}

内部 etcd

inCluster 表示当 Milvus 集群启动时,集群中会自动启动一个 etcd 服务。

示例

以下示例配置内部 etcd 服务。

apiVersion: milvus.io/v1alpha1

kind: Milvus

metadata:

name: my-release

labels:

app: milvus

spec:

dependencies:

etcd:

inCluster:

values:

replicaCount: 5

resources:

limits:

cpu: '4'

memory: 8Gi

requests:

cpu: 200m

memory: 512Mi

components: {}

config: {}
前面的示例将副本数指定为 5,并限制了 etcd 的计算资源。
values.yaml 中查找配置内部 etcd 服务的完整配置项。根据需要在 etcd.inCluster.values 下添加配置项,如前面的示例所示。

假设配置文件名为 milvuscluster.yaml,运行以下命令以应用配置。

kubectl apply -f milvuscluster.yaml

配置 Pulsar

Pulsar 管理最近更改的日志,输出流日志,并提供日志订阅。在 spec.dependencies.pulsar 下添加必需的字段来配置 Pulsar。 pulsar 支持 externalinCluster

外部 Pulsar

external 表示使用外部 Pulsar 服务。 用于配置外部 Pulsar 服务的字段包括:

  • external:值为 true 表示 Milvus 使用外部 Pulsar 服务。
  • endpoints:Pulsar 的端点。

示例

以下示例配置外部 Pulsar 服务。

apiVersion: milvus.io/v1alpha1

kind: Milvus

metadata:

name: my-release

labels:

app: milvus

spec:

dependencies: # Optional

pulsar: # Optional

# Whether (=true) to use an existed external pulsar as specified in the field endpoints or

# (=false) create a new pulsar inside the same kubernetes cluster for milvus.

external: true # Optional default=false

# The external pulsar endpoints if external=true

endpoints:

- 192.168.1.1:6650

components: {}

config: {}

内部 Pulsar

inCluster 表示当 Milvus 集群启动时,集群中会自动启动一个 Pulsar 服务。

示例

以下示例配置内部 Pulsar 服务。

apiVersion: milvus.io/v1alpha1

kind: Milvus

metadata:

name: my-release

labels:

app: milvus

spec:

dependencies:

pulsar:

inCluster:

values:

components:

autorecovery: false

zookeeper:

replicaCount: 1

bookkeeper:

replicaCount: 1

resoureces:

limit:

cpu: '4'

memory: 8Gi

requests:

cpu: 200m

memory: 512Mi

broker:

replicaCount: 1

configData:

## Enable `autoSkipNonRecoverableData` since bookkeeper is running

## without persistence

autoSkipNonRecoverableData: "true"

managedLedgerDefaultEnsembleSize: "1"

managedLedgerDefaultWriteQuorum: "1"

managedLedgerDefaultAckQuorum: "1"

proxy:

replicaCount: 1

components: {}

config: {}
此示例指定了 Pulsar 每个组件的副本数量、Pulsar BookKeeper 的计算资源以及其他配置。
values.yaml 中查找配置内部 Pulsar 服务的完整配置项。根据需要在 pulsar.inCluster.values 下添加配置项,如前面的示例所示。

假设配置文件名为 milvuscluster.yaml,运行以下命令以应用配置。

kubectl apply -f milvuscluster.yaml

下一步

如果您想学习如何使用 milvus.yaml 配置依赖项,请参见系统配置