使用 Milvus Operator 配置依赖项
Milvus 集群依赖于包括对象存储、etcd 和 Pulsar 在内的组件。本主题介绍在使用 Milvus Operator 安装 Milvus 时如何配置这些依赖项。
本主题假设您已部署 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
支持 external
和 inCluster
。
外部对象存储
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 服务。
示例
以下示例配置内部 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 的副本数量。storage.inCluster.values
下添加配置项,如前面的示例所示。假设配置文件名为 milvuscluster.yaml
,运行以下命令以应用配置。
kubectl apply -f milvuscluster.yaml
my-release
是一个现有的 Milvus 集群,milvuscluster.yaml
会覆盖其配置。否则,将创建一个新的 Milvus 集群。配置 etcd
etcd 存储 Milvus 集群中组件的元数据。在 spec.dependencies.etcd
下添加必需的字段来配置 etcd。
etcd
支持 external
和 inCluster
。
用于配置外部 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 的计算资源。etcd.inCluster.values
下添加配置项,如前面的示例所示。假设配置文件名为 milvuscluster.yaml
,运行以下命令以应用配置。
kubectl apply -f milvuscluster.yaml
配置 Pulsar
Pulsar 管理最近更改的日志,输出流日志,并提供日志订阅。在 spec.dependencies.pulsar
下添加必需的字段来配置 Pulsar。
pulsar
支持 external
和 inCluster
。
外部 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.inCluster.values
下添加配置项,如前面的示例所示。假设配置文件名为 milvuscluster.yaml
,运行以下命令以应用配置。
kubectl apply -f milvuscluster.yaml
下一步
如果您想学习如何使用 milvus.yaml
配置依赖项,请参见系统配置。