🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus詳細設定の変更方法

Milvus詳細設定の変更方法

  • Engineering
November 08, 2021
Zilliz

Zillizテスト開発エンジニアのYufen Zongは、華中科技大学のコンピュータ技術修士号を取得。現在、Milvusベクトルデータベースの品質保証に従事しており、インターフェース統合テスト、SDKテスト、ベンチマークテストなどを含むが、これらに限定されない。Milvusのテストと開発における熱心な問題解決者であり、カオス工学の理論とフォールトドリルの実践の大ファンである。

経歴

Milvusベクトルデータベースを使用する際、様々なシナリオの要件を満たすためにデフォルトの設定を変更する必要があります。以前、あるMilvusユーザが、Docker Composeを使ってデプロイされたMilvusの設定を変更する方法を紹介しました。今回は、Kubernetes上にデプロイされたMilvusの設定を変更する方法についてご紹介します。

Kubernetes上のMilvusの設定を変更する

変更したい設定パラメータに応じて、様々な変更プランを選択することができます。Milvusの設定ファイルはすべてmilvus/configs配下に格納されています。KubernetesにMilvusをインストールすると、ローカルにMilvus Helm Chartリポジトリが追加されます。helm show values milvus/milvus を実行することで、Chartで直接変更可能なパラメータを確認することができます。Chartで変更可能なパラメータについては、--values または--set を使用してパラメータを渡すことができます。詳しくは、Milvus Helm Chartと Helmを参照してください。

変更したいパラメータがリストにない場合は、以下の手順に従ってください。

以下の手順では、/milvus/configs/advanced/root_coord.yamlのパラメータrootcoord.dmlChannelNum をデモ用に変更します。Kubernetes上でのMilvusの設定ファイル管理は、ConfigMapリソースオブジェクトを通して実装されている。パラメータを変更するには、まず対応するChartリリースのConfigMapオブジェクトを更新し、次に対応するPodのデプロイリソースファイルを修正する必要があります。

この方法は、デプロイされたmilvusアプリケーションのパラメータ変更にのみ適用されますのでご注意ください。デプロイ前に/milvus/configs/advanced/*.yamlのパラメータを変更するには、Milvus Helm Chart を再度開発する必要があります。

ConfigMap YAMLの変更

以下のように、Kubernetes上で動作するMilvusリリースは、リリースと同じ名前のConfigMapオブジェクトに対応しています。ConfigMapオブジェクトのdata セクションには、milvus.yamlの設定のみが含まれます。root_coord.yamlの rootcoord.dmlChannelNum を変更するには、root_coord.yamlのパラメータをConfigMap YAMLのdata セクションに追加し、特定のパラメータを変更する必要があります。

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

デプロイメント YAML の変更

ConfigMap に格納されたデータは、configMap タイプのボリュームで参照することができ、その後、ポッドで実行されているコンテナ化されたアプリケーションによって消費されます。新しい設定ファイルにポッドを誘導するには、root_coord.yaml 内の設定をロードする必要があるポッド・テンプレートを修正する必要があります。具体的には、デプロイメント YAML のspec.template.spec.containers.volumeMounts セクションの下にマウント宣言を追加する必要があります。

rootcoord podのデプロイメントYAMLを例にとると、.spec.volumes セクションにmilvus-configという configMap タイプのボリュームが指定されています。また、spec.template.spec.containers.volumeMounts セクションでは、milvusリリースのmilvus.yamlを /milvus/configigs/milvus.yamlにマウントすることが宣言されています。同様に、rootcoordコンテナ専用のマウント宣言を追加して、/milvus/configigs/advanced/root_coord.yamlに root_coord.yamlをマウントするだけで、コンテナは新しい設定ファイルにアクセスできるようになる。

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

結果の確認

kubeletは、定期的な同期ごとに、マウントされたConfigMapが新しいかどうかをチェックします。ボリュームで消費される ConfigMap が更新されると、投影されたキーも自動的に更新されます。新しいポッドが再び実行されると、ポッドで修正が成功したかどうかを確認できます。パラメータrootcoord.dmlChannelNum を確認するためのコマンドを以下に示します。

$ 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

以上がKubernetes上にデプロイされたMilvusの高度な設定を変更する方法である。Milvusの将来のリリースでは、すべての設定が1つのファイルに統合され、helm chartによる設定の更新がサポートされる予定だ。しかしその前に、この記事が一時的な解決策としてお役に立てれば幸いです。

私たちのオープンソースコミュニティに参加してください:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

続けて読む