使用 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: MilvusCluster
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 操作符的依赖项
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: MilvusCluster
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: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
storage: #
external: false
type: "MinIO" # 可选("MinIO","S3")默认值:="MinIO"
inCluster:
# 集群内删除存储时的删除策略
deletionPolicy: Retain # 可选("Delete","Retain")默认值:"Retain"
# 当deletionPolicy="Delete"时,在删除存储时是否删除PersistantVolumeClaim
pvcDeletion: false
values:
resources:
limits:
cpu: '2'
memory: 6Gi
requests:
cpu: 100m
memory: 512Mi
statefulset:
replicaCount: 6
components: {}
config: {}
假设配置文件名为 milvuscluster.yaml
,运行以下命令应用配置。
kubectl apply -f milvuscluster.yaml
配置 etcd
etcd 存储了 Milvus 集群中组件的元数据。在 spec.dependencies.etcd
下添加所需的字段来配置 etcd。
etcd
支持 external
和 inCluster
。
用于配置外部 etcd 服务的字段包括:
external
:true
表示 Milvus 使用外部 etcd 服务。endpoints
:etcd 的终端点。
外部 etcd
示例
以下示例配置了一个内部 MinIO 服务。
apiVersion: milvus.io/v1alpha1
kind: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies:
storage: #
external: false
type: "MinIO" # 可选 ("MinIO", "S3") 默认值:="MinIO"
inCluster:
# 当删除Milvus集群时,指定存储的删除策略
deletionPolicy: Retain # 可选 ("Delete", "Retain") 默认值:"Retain"
# 当deletionPolicy="Delete"时,指定在删除存储时是否删除PersistantVolumeClaim(PVC)
pvcDeletion: false
values:
resources:
limits:
cpu: '2'
memory: 6Gi
requests:
cpu: 100m
memory: 512Mi
statefulset:
replicaCount: 6
components: {}
config: {}
假设配置文件名为 milvuscluster.yaml
,运行以下命令应用配置。
kubectl apply -f milvuscluster.yaml
配置 etcd
etcd 用于存储 Milvus 集群中组件的元数据。在 spec.dependencies.etcd
下添加所需的字段来配置 etcd。
etcd
支持 external
和 inCluster
。
用于配置外部 etcd 服务的字段包括:
external
:为true
表示 Milvus 使用外部 etcd 服务。endpoints
:etcd 的终端点。
外部 etcd
示例
以下示例配置了一个外部 etcd 服务。
kind: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies: # 可选
etcd: # 可选
# 是否(=true)使用在字段endpoints中指定的现有外部etcd,或
# (=false)在milvus所在的kubernetes集群内创建一个新的etcd。
external: true # 可选 默认值=false
# 如果external=true,则是外部etcd的端点
endpoints:
- 192.168.1.1:2379
components: {}
config: {}
内部 etcd
inCluster
表示当 Milvus 集群启动时,etcd 服务会在集群中自动启动。
示例
以下示例配置了一个内部 etcd 服务。
apiVersion: milvus.io/v1alpha1
kind: MilvusCluster
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: {}
假设配置文件名为 milvuscluster.yaml
,运行以下命令应用配置。
kubectl apply -f milvuscluster.yaml
配置 Pulsar
以下示例配置了一个外部 etcd 服务。
kind: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies: # 可选项
etcd: # 可选项
# 等于true表示使用外部指定在endpoints字段中存在的etcd,等于false表示为milvus在同一个kubernetes集群中创建新的etcd。
external: true # 可选项,默认值=false
# external=true时,指定外部etcd的端点
endpoints:
- 192.168.1.1:2379
components: {}
config: {}
内部 etcd
inCluster
表示当 Milvus 集群启动时,etcd 服务会自动在集群中启动。
示例
以下示例配置了一个内部 etcd 服务。
apiVersion: milvus.io/v1alpha1
kind: MilvusCluster
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: {}
假设配置文件名为 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: MilvusCluster
metadata:
name: my-release
labels:
app: milvus
spec:
dependencies: # 可选
pulsar: # 可选
# 是否(=true)使用已存在的外部 pulsar,如字段 endpoints 中指定的。
# 或(=false)为 milvus 在同一 kubernetes 集群内创建一个新的 pulsar。
external: true # 可选,默认值=false
# 如果 external=true,则为外部 pulsar 的端点
endpoints:
- 192.168.1.1:6650
components: {}
config: {}
内部 Pulsar
inCluster
表示当 Milvus 集群启动时,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: 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: {}
假设配置文件的名称为 milvuscluster.yaml
,执行以下命令应用配置。
kubectl apply -f milvuscluster.yaml
下一步
你的回答是:
The following example configures an internal Pulsar service.
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: {}
Assuming that the configuration file is named milvuscluster.yaml
, run the following command to apply the configuration.
kubectl apply -f milvuscluster.yaml
What's next
如果你想学习如何使用 milvus.yaml
配置依赖项,请参阅 System Configuration。
如果你想学习如何使用 milvus.yaml
配置依赖项,请参阅 系统配置。