前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术分享|如何对 Milvus 进行参数配置

技术分享|如何对 Milvus 进行参数配置

作者头像
Zilliz RDS
发布2021-10-20 09:51:09
1.9K0
发布2021-10-20 09:51:09
举报
文章被收录于专栏:Reinvent Data Science

✏️ 作者简介:

宗玉芬,Zilliz 测试开发工程师,华中科技大学计算机技术工程硕士。目前专注于 Milvus 数据库的质量保障工作,包括但不限于接口测试、SDK 测试、Benchmark 测试等。一个喜欢定位问题、热爱探究混沌工程理论与故障演练实践的测试开发小朋友。

如何修改 Milvus Advanced Configuration

背景

在使用 Milvus 数据库时,我们可能希望修改默认参数以满足不同场景的需求。前不久,已有 Milvus 用户分享了如何在使用 docker-compose 部署时修改配置文件(点击阅读:技术分享|如何对 Milvus 2.0 进行参数配置),本文将简单介绍如何在使用 Kubernetes 部署 Milvus 时修改配置参数。

不同的参数配置可以选择不同的修改方案。Milvus 所有的配置文件都位于 /milvus/configs/ 路径下。当使用 Kubernetes 安装 Milvus 应用时我们会添加 Milvus Chart 仓库,添加后通过命令 helm show values milvus/milvus 查看 Chart 能配置的参数项。如果这些参数项中包含我们想要修改的参数,则可以通过 --values--set 两种方式传递配置数据,具体使用细节请参考:

  • Milvus Helm Chart : https://artifacthub.io/packages/helm/milvus/milvus
  • 或是 Helm :https://helm.sh/zh/docs/

如果不包含我们想修改的参数,则可以考虑下文介绍的小方法:

Milvus 数据库在 Kubernetes 中的配置文件管理是通过 ConfigMap 资源对象实现的。如果我们需要修改 Milvus Chart 可配置选项以外的参数,则需要先更新对应 Chart Release 的 ConfigMap 对象,然后修改相应 Pod 的 Deployment 资源文件。接下来,以修改 /milvus/configs/advanced/root_coord.yaml 文件中的 rootcoord.dmlChannelNum 参数为例进行说明,按照先修改 ConfigMap 对象属性再修改 Deployment 对象属性两个步骤进行,将其值从 256 修改为 128

💡 需要注意的是,该方法只针对已经部署的 Milvus 应用进行配置修改。如果需要在部署时或部署前修改 /milvus/configs/advanced/*.yaml 中的配置,我们需要对 Milvus Helm Chart 进行再开发。

修改 ConfigMap 清单文件

Kubernetes 中运行的 Release 对应着名为 milvus-chaos 的 ConfigMap 对象,其 data 属性只包含了 milvus.yaml 文件的配置。同理,我们需要将rootcoord.dmlChannelNum 参数所在的 root_coord.yaml 配置到 data 属性中,同时将 rootcoord.dmlChannelNum 修改为 128 即可。

代码语言:javascript
复制
kind: ConfigMap
apiVersion: v1
metadata:
  name: milvus-chaos
  ...
data:
  milvus.yaml: >
    ......
  root_coord.yaml: |
    rootcoord:
      dmlChannelNum: 128
      maxPartitionNum: 4096
      minSegmentSizeToEnableIndex: 1024
      timeout: 3600 # time out, 5 seconds
      timeTickInterval: 200 # ms

修改 Deployment 清单文件

ConfigMap 对象中存储的数据可以被 configMap 类型的卷引用,然后向 Pod 注入配置数据,从而被 Pod 中运行的容器化应用使用。如果我们想让 Pod 访问新的配置文件,则需修改那些会加载 root_coord.yaml 配置的 Pod 模板,具体是在 Deployment 资源清单文件中的 spec.template.spec.containers.volumeMounts 下添加一个挂载声明。以 rootcoord pod 的 Deployment 资源清单为例,从 spec.template.spec.volumes 关键字可以看到 Pod 顶层声明了一个名为 milvus-config,类型是 configMapVolume,并且 Pod 中的 rootcoord 容器声明将卷 milvus-chaos 的 milvus.yaml 文件挂载到路径 /milvus/configs/milvus.yaml 下。同理,我们只需要将 root_coord.yaml 文件挂载到 /milvus/configs/advanced/root_coord.yaml 路径下,以便容器能访问即可。

代码语言:javascript
复制
spec:
  replicas: 1
  selector:
    ......
  template:
    metadata:
      ...
    spec:
      volumes:
        - name: milvus-config
          configMap:
            name: milvus-chaos
            defaultMode: 420
      containers:
        - name: rootcoord
          image: 'milvusdb/milvus-dev:master-20210906-86afde4'
          args:
            ...
          ports:
            ...
          resources: {}
          volumeMounts:
            - name: milvus-config
              readOnly: true
              mountPath: /milvus/configs/milvus.yaml
              subPath: milvus.yaml
            - name: milvus-config
              readOnly: true
              mountPath: /milvus/configs/advanced/root_coord.yaml
              subPath: root_coord.yaml
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      schedulerName: default-scheduler

验证结果

完成上述两步修改后,Pod 重新挂载了 ConfigMap 卷,且 ConfigMap 属性的修改被检测到后,Pod 会滚动更新。当新的 Pod 重新进入 Running 状态后,我们可以进入 Pod 验证是否修改成功,具体命令如下所示。可以看到 /milvus/configs/advanced/root_coord.yaml 文件中的rootcoord.dmlChannelNum 的值已经更新为 128 了。

代码语言:javascript
复制
$ kctl exec -ti milvus-chaos-rootcoord-6f56794f5b-xp2zs -- sh

# cd configs/advanced
# pwd
/milvus/configs/advanced
# ls
channel.yaml  common.yaml  data_coord.yaml  data_node.yaml  etcd.yaml  proxy.yaml  query_node.yaml  root_coord.yaml

# cat root_coord.yaml
rootcoord:
  dmlChannelNum: 128
  maxPartitionNum: 4096
  minSegmentSizeToEnableIndex: 1024
  timeout: 3600 # time out, 5 seconds
  timeTickInterval: 200 # ms
# exit

至此,该修改 Milvus 配置的方法已经介绍完毕。在 Milvus 之后的版本中,我们会将用户所关心的配置参数统一放置到一个文件中,且支持通过 Helm Chart 配置更新。在新版本诞生前,希望这篇文档介绍的临时修改方案能对大家有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档