🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Как изменить расширенные конфигурации Milvus

Как изменить расширенные конфигурации Milvus

  • Engineering
November 08, 2021
Zilliz

Юфен Цонг, инженер по разработке тестов Zilliz, окончила Хуачжунский университет науки и технологий со степенью магистра в области компьютерных технологий. В настоящее время она занимается обеспечением качества векторной базы данных Milvus, включая, помимо прочего, тестирование интеграции интерфейсов, тестирование SDK, тестирование бенчмарков и т. д. Юфэн с энтузиазмом занимается решением проблем, связанных с тестированием и разработкой Milvus, а также является большим поклонником теории хаос-инженерии и практики бурения неисправностей.

Справочная информация

При использовании векторной базы данных Milvus вам потребуется изменить конфигурацию по умолчанию, чтобы удовлетворить требования различных сценариев. Ранее один из пользователей Milvus рассказывал о том , как изменить конфигурацию Milvus, развернутого с помощью Docker Compose. А в этой статье я хочу поделиться с вами тем, как изменить конфигурацию Milvus, развернутого на Kubernetes.

Изменение конфигурации Milvus на Kubernetes

Вы можете выбрать различные планы модификации в зависимости от параметров конфигурации, которые вы хотите изменить. Все файлы конфигурации Milvus хранятся в папке milvus/configs. При установке Milvus на Kubernetes локально будет добавлен репозиторий Milvus Helm Chart. Запустив helm show values milvus/milvus, вы можете проверить параметры, которые можно изменить непосредственно с помощью Chart. Для параметров, которые можно изменить с помощью Chart, можно передать параметр с помощью --values или --set. Дополнительные сведения см. в разделах Milvus Helm Chart и Helm.

Если параметров, которые вы хотите изменить, нет в списке, вы можете следовать приведенной ниже инструкции.

В следующих шагах в демонстрационных целях будет изменен параметр rootcoord.dmlChannelNum в файле /milvus/configs/advanced/root_coord.yaml. Управление файлами конфигурации Milvus на Kubernetes реализовано через объект ресурса ConfigMap. Чтобы изменить параметр, необходимо сначала обновить объект ConfigMap соответствующего релиза Chart, а затем изменить файлы ресурсов развертывания соответствующих капсул.

Обратите внимание, что этот метод применим только для изменения параметров развернутого приложения Milvus. Чтобы изменить параметры в /milvus/configs/advanced/*.yaml перед развертыванием, вам придется заново разработать Milvus Helm Chart.

Изменение ConfigMap YAML

Как показано ниже, вашему релизу Milvus, запущенному на Kubernetes, соответствует объект ConfigMap с тем же именем, что и у релиза. Раздел data объекта ConfigMap включает только конфигурации в milvus.yaml. Чтобы изменить rootcoord.dmlChannelNum в root_coord.yaml, необходимо добавить параметры из root_coord.yaml в раздел data в ConfigMap YAML и изменить конкретный параметр.

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. В частности, нужно добавить объявление монтирования в раздел spec.template.spec.containers.volumeMounts в YAML развертывания.

Если взять в качестве примера YAML развертывания стручка rootcoord, то в секции .spec.volumes указан том типа configMap с именем milvus-config. А в секции spec.template.spec.containers.volumeMounts объявлено, что том будет монтировать milvus.yaml вашего релиза Milvus в /milvus/configs/milvus.yaml. Аналогично, вам нужно только добавить объявление монтирования специально для контейнера rootcoord, чтобы смонтировать root_coord.yaml в /milvus/configs/advanced/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

Проверка результата

Куплет проверяет свежесть смонтированной ConfigMap при каждой периодической синхронизации. При обновлении ConfigMap, хранящейся в томе, автоматически обновляются и проецируемые ключи. Когда новый pod снова будет запущен, вы сможете проверить, успешно ли прошла модификация в pod. Команды для проверки параметра 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

Выше приведен способ изменения расширенных конфигураций в Milvus, развернутом на Kubernetes. В будущем выпуске Milvus все конфигурации будут объединены в один файл и будет поддерживаться обновление конфигурации через helm chart. Но до этого, я надеюсь, эта статья поможет вам в качестве временного решения.

Присоединяйтесь к нашему сообществу разработчиков с открытым исходным кодом:

  • Найдите Milvus на GitHub или внесите в него свой вклад.

  • Взаимодействуйте с сообществом через форум.

  • Общайтесь с нами в Twitter.

Like the article? Spread the word

Продолжить чтение