🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Cómo modificar las configuraciones avanzadas de Milvus

Cómo modificar las configuraciones avanzadas de Milvus

  • Engineering
November 08, 2021
Zilliz

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:

  • Encuentre o contribuya a Milvus en GitHub.

  • Interactúe con la comunidad a través del Foro.

  • Conéctese con nosotros en Twitter.

Try Managed Milvus for Free

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

Get Started

Like the article? Spread the word

Sigue Leyendo