Cómo modificar las configuraciones avanzadas de Milvus
Yufen Zong, ingeniera de desarrollo de pruebas de Zilliz, se licenció en tecnología informática por la Universidad de Ciencia y Tecnología de Huazhong. En la actualidad se dedica a garantizar la calidad de la base de datos vectorial Milvus, lo que incluye, entre otras cosas, pruebas de integración de interfaces, pruebas de SDK, pruebas de Benchmark, etc. Yufen es una entusiasta solucionadora de problemas en las pruebas y el desarrollo de Milvus, y una gran aficionada a la teoría de la ingeniería del caos y a la práctica de la perforación de fallos.
Antecedentes
Al utilizar la base de datos vectorial Milvus, necesitará modificar la configuración por defecto para satisfacer los requisitos de diferentes escenarios. Anteriormente, un usuario de Milvus compartió sobre Cómo modificar la configuración de Milvus desplegado utilizando Docker Compose. Y en este artículo, me gustaría compartir con ustedes cómo modificar la configuración de Milvus desplegado en Kubernetes.
Modificar la configuración de Milvus en Kubernetes
Puede elegir diferentes planes de modificación según los parámetros de configuración que desee modificar. Todos los archivos de configuración de Milvus se almacenan en milvus/configs. Al instalar Milvus en Kubernetes, se añadirá localmente un repositorio de Milvus Helm Chart. Ejecutando helm show values milvus/milvus
, puede comprobar los parámetros modificables directamente con Chart. Para los parámetros modificables con Chart, puede pasar el parámetro utilizando --values
o --set
. Para más información, consulte Milvus Helm Chart y Helm.
Si los parámetros que espera modificar no están en la lista, puede seguir las siguientes instrucciones.
En los siguientes pasos, se modificará el parámetro rootcoord.dmlChannelNum
en /milvus/configs/advanced/root_coord.yaml con fines de demostración. La gestión de archivos de configuración de Milvus en Kubernetes se implementa a través del objeto de recurso ConfigMap. Para cambiar el parámetro, primero debe actualizar el objeto ConfigMap de la versión Chart correspondiente y, a continuación, modificar los archivos de recursos de despliegue de los pods correspondientes.
Tenga en cuenta que este método sólo se aplica a la modificación de parámetros en la aplicación Milvus desplegada. Para modificar los parámetros en /milvus/configs/advanced/*.yaml antes del despliegue, tendrá que volver a desarrollar el Milvus Helm Chart.
Modificar ConfigMap YAML
Como se muestra a continuación, su versión de Milvus que se ejecuta en Kubernetes corresponde a un objeto ConfigMap con el mismo nombre de la versión. La sección data
del objeto ConfigMap solo incluye configuraciones en milvus.yaml. Para modificar rootcoord.dmlChannelNum
en root_coord .yaml, debe añadir los parámetros de root_coord.yaml a la sección data
en el YAML de ConfigMap y modificar el parámetro específico.
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
Modificación de YAML de despliegue
Los datos almacenados en un ConfigMap pueden referenciarse en un volumen de tipo configMap y luego ser consumidos por las aplicaciones en contenedores que se ejecutan en un pod. Para dirigir los pods a los nuevos archivos de configuración, debe modificar las plantillas pod que necesitan cargar las configuraciones en root_coord.yaml. En concreto, debe añadir una declaración de montaje bajo la sección spec.template.spec.containers.volumeMounts
en el YAML de despliegue.
Tomando como ejemplo el YAML de despliegue del pod rootcoord, en la sección .spec.volumes
se especifica un volumen de tipo configMap
denominado milvus-config. Y, en la sección spec.template.spec.containers.volumeMounts
, el volumen se declara para montar milvus.yaml de su versión de Milvus en /milvus/configs/milvus.yaml. Del mismo modo, sólo tiene que añadir una declaración de montaje específica para el contenedor rootcoord para montar el root_coord.yam l en /milvus/configs/advanced/root_coord.yaml, y así el contenedor podrá acceder al nuevo archivo de configuración.
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
Verificar el resultado
El kubelet comprueba si el ConfigMap montado es fresco en cada sincronización periódica. Cuando el ConfigMap consumido en el volumen se actualiza, las claves proyectadas también se actualizan automáticamente. Cuando el nuevo pod se está ejecutando de nuevo, puede verificar si la modificación se ha realizado correctamente en el pod. Los comandos para comprobar el parámetro rootcoord.dmlChannelNum
se comparten a continuación.
$ 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
Arriba está el método para modificar las configuraciones avanzadas en Milvus desplegado en Kubernetes. La futura versión de Milvus integrará todas las configuraciones en un archivo, y soportará la actualización de la configuración a través de helm chart. Pero antes de eso, espero que este artículo pueda ayudarle como una solución temporal.
Participe con nuestra comunidad de código abierto:
- Antecedentes
- Modificar la configuración de Milvus en Kubernetes
- Participe con nuestra comunidad de código abierto:
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