Ejecutar Milvus en Kubernetes con Helm

Esta página ilustra cómo iniciar una instancia de Milvus en Kubernetes utilizando los gráficos de Milvus Helm.

Visión general

Helm utiliza un formato de empaquetado llamado charts. Un gráfico es una colección de archivos que describen un conjunto relacionado de recursos de Kubernetes. Milvus proporciona un conjunto de gráficos para ayudarle a desplegar dependencias y componentes de Milvus.

Requisitos previos

  • Instale Helm CLI.

  • Crear un cluster K8s.

  • Instale una StorageClass. Puede comprobar la StorageClass instalada de la siguiente manera.

    $ kubectl get sc
    
    NAME                  PROVISIONER                  RECLAIMPOLICY    VOLUMEBIINDINGMODE    ALLOWVOLUMEEXPANSION     AGE
    standard (default)    k8s.io/minikube-hostpath     Delete           Immediate             false 
    
  • Compruebe los requisitos de hardware y software antes de la instalación.

  • Antes de instalar Milvus, se recomienda utilizar Milvus Sizing Tool para estimar los requisitos de hardware basados en el tamaño de sus datos. Esto ayuda a garantizar un rendimiento y una asignación de recursos óptimos para su instalación de Milvus.

Si encuentra algún problema al tirar de la imagen, póngase en contacto con nosotros en community@zilliz.com con detalles sobre el problema, y le proporcionaremos el soporte necesario.

Instalar Milvus Helm Chart

Antes de instalar Milvus Helm Charts, necesita añadir el repositorio Milvus Helm.

helm repo add zilliztech https://zilliztech.github.io/milvus-helm/

El repositorio de Milvus Helm Charts en https://github.com/milvus-io/milvus-helm ha sido archivado. Ahora usamos el nuevo repositorio en https://github.com/zilliztech/milvus-helm. El repositorio archivado aún está disponible para gráficos hasta la versión 4.0.31, pero utilice el nuevo repositorio para versiones posteriores.

A continuación, obtenga los gráficos Milvus del repositorio de la siguiente manera:

$ helm repo update

Siempre puede ejecutar este comando para obtener las últimas cartas Milvus Helm.

Instalación en línea

1. Despliegue un cluster Milvus

Una vez que haya instalado la carta Helm, puede iniciar Milvus en Kubernetes. Esta sección le guía a través del despliegue de un cluster Milvus.

¿Necesita un despliegue independiente en su lugar?

Si prefiere desplegar Milvus en modo autónomo (nodo único) para desarrollo o pruebas, utilice este comando:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.15 \
  --set cluster.enabled=false \
  --set pulsarv3.enabled=false \
  --set standalone.messageQueue=woodpecker \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true

Nota: El modo autónomo utiliza Woodpecker como cola de mensajes predeterminada y habilita el componente Streaming Node. Para más detalles, consulte la Descripción general de la arquitectura y el Uso de Woodpecker.

Despliegue del cluster Milvus:

El siguiente comando despliega un cluster Milvus con configuración optimizada para v2.6.15, utilizando Woodpecker como cola de mensajes recomendada:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.15 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Qué hace este comando:

  • Utiliza Woodpecker como cola de mensajes (recomendado para reducir el mantenimiento)
  • Activa el nuevo componente Streaming Node para mejorar el rendimiento.
  • Desactiva el nodo de índice heredado (la funcionalidad la gestiona ahora el nodo de datos).
  • Desactiva Pulsar para utilizar en su lugar Woodpecker

Cambios de arquitectura en Milvus 2.6.x:

  • Cola de mensajes: Ahora se recomienda Woodpecker (reduce el mantenimiento de la infraestructura en comparación con Pulsar)
  • Nuevo componente: Streaming Node se introduce y se activa por defecto
  • Componentes fusionados: El nodo de índice y el nodo de datos se combinan en un único nodo de datos.

Para más detalles sobre la arquitectura, consulte la Visión general de la arquitectura.

Opciones alternativas de colas de mensajes:

Si prefiere utilizar Pulsar (opción tradicional) en lugar de Woodpecker:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.15 \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Pasos siguientes: El comando anterior despliega Milvus con las configuraciones recomendadas. Para uso en producción:

Notas importantes:

  • Nomenclatura de versiones: Utilice solo letras, números y guiones (no se permiten puntos)
  • Kubernetes v1.25+: Si tiene problemas con PodDisruptionBudget, utilice esta solución:
    helm install my-release zilliztech/milvus \
      --set pulsar.bookkeeper.pdb.usePolicy=false \
      --set pulsar.broker.pdb.usePolicy=false \
      --set pulsar.proxy.pdb.usePolicy=false \
      --set pulsar.zookeeper.pdb.usePolicy=false
    

Para obtener más información, consulte Milvus Helm Chart y la documentación de Helm.

2. Compruebe el estado del clúster Milvus

Verifique que su despliegue se ha realizado correctamente comprobando el estado del pod:

kubectl get pods

Espere a que todos los pods muestren el estado "Running". Con la configuración v2.6.15, debería ver pods similares a:

NAME                                             READY  STATUS   RESTARTS  AGE
my-release-etcd-0                                1/1    Running   0        3m23s
my-release-etcd-1                                1/1    Running   0        3m23s
my-release-etcd-2                                1/1    Running   0        3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj      1/1    Running   0        3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        3m24s
my-release-milvus-streaming-node-xxxxxxxxx       1/1    Running   0        3m24s
my-release-minio-0                               1/1    Running   0        3m23s
my-release-minio-1                               1/1    Running   0        3m23s
my-release-minio-2                               1/1    Running   0        3m23s
my-release-minio-3                               1/1    Running   0        3m23s
my-release-pulsar-autorecovery-86f5dbdf77-lchpc  1/1    Running   0        3m24s
my-release-pulsar-bookkeeper-0                   1/1    Running   0        3m23s
my-release-pulsar-bookkeeper-1                   1/1    Running   0        98s
my-release-pulsar-broker-556ff89d4c-2m29m        1/1    Running   0        3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v         1/1    Running   0        3m23s
my-release-pulsar-zookeeper-0                    1/1    Running   0        3m23s
my-release-pulsar-zookeeper-metadata-98zbr       0/1   Completed  0        3m24s

Componentes clave a verificar:

  • Componentes Milvus: mixcoord, datanode, querynode, proxy, streaming-node
  • Dependencias: etcd (metadatos), minio (almacenamiento de objetos), pulsar (cola de mensajes)

También puede acceder a la WebUI de Milvus en http://127.0.0.1:9091/webui/ una vez que se haya configurado el reenvío de puertos (véase el paso siguiente). Para más detalles, consulte Milvus WebUI.

3. Conectarse a Milvus

Para conectarse a su cluster Milvus desde fuera de Kubernetes, necesita configurar el reenvío de puertos.

Configure el reenvío de puertos:

kubectl port-forward service/my-release-milvus 27017:19530

Este comando reenvía su puerto local 27017 al puerto de Milvus 19530. Usted debe ver:

Forwarding from 127.0.0.1:27017 -> 19530

Detalles de la conexión:

  • Conexión local: localhost:27017
  • Puerto por defecto de Milvus: 19530

Opciones para el reenvío de puertos:

  • Auto-assign local port: Utilice :19530 en lugar de 27017:19530 para que kubectl elija un puerto disponible
  • Escuchar en todas las interfaces: Añadir --address 0.0.0.0 para permitir conexiones desde otras máquinas:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • Despliegue autónomo: Si utiliza el modo autónomo, el nombre del servicio sigue siendo el mismo

Mantenga este terminal abierto mientras utiliza Milvus. Ahora puede conectarse a Milvus utilizando cualquier SDK de Milvus en localhost:27017.

(Opcional) Actualizar las configuraciones de Milvus

Puede actualizar las configuraciones de su cluster Milvus editando el archivo values.yaml y aplicándolo de nuevo.

  1. Cree un archivo values.yaml con las configuraciones deseadas.

    A continuación se asume que desea habilitar proxy.http.

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    Para conocer los elementos de configuración aplicables, consulte Configuración del sistema.

  2. Aplique el archivo values.yaml.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. Compruebe las configuraciones actualizadas.

    helm get values my-release
    

    La salida debería mostrar las configuraciones actualizadas.

Acceso a Milvus WebUI

Milvus se suministra con una herramienta GUI integrada llamada Milvus WebUI a la que puede acceder a través de su navegador. Milvus Web UI mejora la observabilidad del sistema con una interfaz sencilla e intuitiva. Puede utilizar Milvus Web UI para observar las estadísticas y métricas de los componentes y dependencias de Milvus, comprobar los detalles de la base de datos y la colección, y listar las configuraciones detalladas de Milvus. Para más detalles sobre Milvus Web UI, consulte Milvus WebUI

Para habilitar el acceso a Milvus Web UI, necesita reenviar el puerto del pod proxy a un puerto local.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091

Ahora, puede acceder a Milvus Web UI en http://localhost:27018.

Instalación sin conexión

Si se encuentra en un entorno con restricciones de red, siga el procedimiento de esta sección para iniciar un cluster Milvus.

1. Obtenga el manifiesto de Milvus

Ejecute el siguiente comando para obtener el manifiesto de Milvus.

$ helm template my-release zilliztech/milvus > milvus_manifest.yaml

El comando anterior genera plantillas de gráficos para un cluster Milvus y guarda el resultado en un archivo de manifiesto llamado milvus_manifest.yaml. Utilizando este manifiesto, puede instalar un cluster Milvus con sus componentes y dependencias en pods separados.

  • Para instalar una instancia de Milvus en el modo autónomo en el que todos los componentes de Milvus están contenidos en un único pod, debe ejecutar helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml en su lugar para renderizar plantillas de gráficos para una instancia de Milvus en modo autónomo.
  • Para cambiar las configuraciones de Milvus, descargue la plantilla value.yaml plantilla, coloque en ella la configuración que desee y utilice helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml para renderizar el manifiesto en consecuencia.

2. Descargar el script de extracción de imágenes

El script de extracción de imágenes está desarrollado en Python. Debe descargar el script junto con sus dependencias en el archivo requirement.txt.

$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py

3. Extraer y guardar imágenes

Ejecute el siguiente comando para extraer y guardar las imágenes necesarias.

$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml

Las imágenes se extraen en una subcarpeta llamada images en el directorio actual.

4. Cargar imágenes

Ahora puede cargar las imágenes a los hosts en el entorno restringido a la red de la siguiente manera:

$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done

5. Despliegue de Milvus

$ kubectl apply -f milvus_manifest.yaml

Hasta ahora, puede seguir los pasos 2 y 3 de la instalación en línea para comprobar el estado del cluster y reenviar un puerto local a Milvus.

Actualice el cluster Milvus en ejecución

Ejecute el siguiente comando para actualizar su cluster Milvus en ejecución a la última versión:

$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values

Desinstalar Milvus

Ejecute el siguiente comando para desinstalar Milvus.

$ helm uninstall my-release

Lo que sigue

Una vez instalado Milvus en Docker, puede: