配置Milvus Operator的消息存储
Milvus使用RocksMQ、Pulsar或Kafka来管理最近更改的日志,输出流日志,并提供日志订阅。本主题介绍了在使用Milvus Operator安装Milvus时如何配置消息存储依赖项。
本主题假定您已经部署了Milvus Operator。
See 部署Milvus Operator (opens in a new tab) for more information. 您需要为使用Milvus Operator启动Milvus集群指定配置文件。
kubectl apply -f https://raw.githubusercontent.com/milvus-io/milvus-operator/main/config/samples/milvuscluster_default.yaml
您只需要编辑milvuscluster_default.yaml
中的代码模板来配置第三方依赖项。以下部分介绍了如何分别配置对象存储、etcd和Pulsar。
开始之前
下表显示了RocksMQ、Pulsar和Kafka在Milvus独立模式和集群模式下的支持情况。
RocksMQ | Pulsar | Kafka | |
---|---|---|---|
Standalone mode | ✔️ | ✔️ | ✔️ |
Cluster mode | ✖️ | ✔️ | ✔️ |
还有其他限制可以指定消息存储:
-
仅支持一个Milvus实例对应一个消息存储。但是我们仍然兼容设置多个消息存储的情况。优先级如下:
- 独立模式: RocksMQ (默认) > Pulsar > Kafka
- 集群模式: Pulsar (默认) > Kafka
-
在Milvus系统运行期间无法更改消息存储。
-
仅支持Kafka 2.x或3.x版本。
配置RocksMQ
RocksMQ是Milvus独立版的默认消息存储。
目前,Milvus Operator 仅支持将 RocksMQ 配置为 Milvus 独立版的消息存储。
示例
以下示例配置了一个RocksMQ服务。
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
name: milvus
spec:
dependencies: {}
config: {}
配置Pulsar
Pulsar管理最近更改的日志,输出流日志,并提供日志订阅。在Milvus独立版和Milvus集群中都支持配置Pulsar进行消息存储。但是,使用Milvus Operator,您只能将Pulsar配置为Milvus集群的消息存储。在spec.dependencies.pulsar
下添加所需字段以配置Pulsar。
pulsar
支持external
和inCluster
。
External Pulsar
external
表示使用外部 Pulsar 服务。用于配置外部 Pulsar 服务的字段包括:
-
external
: 如果值为true
,则表示 Milvus 使用外部 Pulsar 服务。 -
endpoints
: Pulsar 的端点。
示例
以下示例配置外部 Pulsar 服务。
apiVersion: milvus.io/v1alpha1
kind: MilvusCluster
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: MilvusCluster
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 (opens in a new tab) 中找到完整的配置项,以配置内部 Pulsar 服务。根据上述示例,在 pulsar.inCluster.values
下添加所需的配置项。
假设配置文件名为milvuscluster.yaml
,运行以下命令应用配置。
kubectl apply -f milvuscluster.yaml
配置Kafka
Pulsar是Milvus集群中的默认消息存储。如果您想要使用Kafka,请添加可选字段msgStreamType
来配置Kafka。
kafka
支持external
和inCluster
。
外部 Kafka
external
表示使用外部 Kafka 服务。
用于配置外部 Kafka 服务的字段包括:
-
external
:如果值为true
,则表示 Milvus 使用外部 Kafka 服务。 -
brokerList
:发送消息的 broker 列表。
Example
以下示例配置外部Kafka服务。
apiVersion: milvus.io/v1alpha1
kind: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
msgStreamType: "kafka"
kafka:
external: true
brokerList:
- "kafkaBrokerAddr1:9092"
- "kafkaBrokerAddr2:9092"
# ...
components: {}
config: {}
内部Kafka
inCluster
表示当 Milvus 集群启动时,Kafka 服务会自动在集群中启动。
例子
以下例子配置了一个内部Kafka服务。
apiVersion: milvus.io/v1alpha1
kind: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
msgStreamType: "kafka"
kafka:
inCluster:
values: {} # values can be found in https://artifacthub.io/packages/helm/bitnami/kafka
components: {}
config: {}
在kafka.inCluster.values
下添加所需的配置项,找到配置内部Kafka服务的完整配置项这里 (opens in a new tab)。
假设配置文件名为milvuscluster.yaml
,运行以下命令应用配置。
kubectl apply -f milvuscluster.yaml
接下来是什么
了解如何使用Milvus Operator配置其他Milvus依赖项: