Как изменить расширенные конфигурации Milvus
Юфен Цонг, инженер по разработке тестов 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 на Kubernetes
- Присоединяйтесь к нашему сообществу разработчиков с открытым исходным кодом:
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word