Ejecutar Milvus en Kubernetes con Helm
Esta página explica cómo iniciar una instancia de Milvus en Kubernetes utilizando los gráficos Helm de Milvus.
Descripción general
Helm utiliza un formato de empaquetado denominado «charts». Un chart es un conjunto de archivos que describen un conjunto relacionado de recursos de Kubernetes. Milvus proporciona un conjunto de charts para ayudarte a implementar las dependencias y los componentes de Milvus.
Requisitos previos
Instala una StorageClass. Puedes 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 falseComprueba los requisitos de hardware y software antes de la instalación.
Antes de instalar Milvus, se recomienda utilizar la herramienta Milvus Sizing Tool para calcular los requisitos de hardware en función del tamaño de tus datos. Esto ayuda a garantizar un rendimiento óptimo y una asignación adecuada de recursos para tu instalación de Milvus.
Si tienes algún problema al descargar la imagen, ponte en contacto con nosotros en community@zilliz.com con los detalles del problema y te proporcionaremos la asistencia necesaria.
Instalar el Helm Chart de Milvus
Antes de instalar los Helm Charts de Milvus, debe añadir el repositorio Helm de Milvus.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
El repositorio de gráficos Helm de Milvus en https://github.com/milvus-io/milvus-helm ha sido archivado. Ahora utilizamos el nuevo repositorio en https://github.com/zilliztech/milvus-helm. El repositorio archivado sigue estando disponible para gráficos hasta la versión 4.0.31, pero utilice el nuevo repositorio para versiones posteriores.
A continuación, descarga los charts de Milvus del repositorio de la siguiente manera:
$ helm repo update
Siempre puedes ejecutar este comando para descargar los gráficos Helm de Milvus más recientes.
Instalación en línea
1. Implementar un clúster de Milvus
Una vez instalado el gráfico de Helm, puede iniciar Milvus en Kubernetes. Esta sección le guía a través del proceso de implementación de un clúster de Milvus.
¿Necesitas una implementación independiente?
Si prefieres implementar Milvus en modo autónomo (un solo nodo) para desarrollo o pruebas, utiliza este comando:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.2 \
--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. Las implementaciones autónomas ejecutan Woodpecker integrado en el pod de Milvus; el servicio dedicado de Woodpecker (pods separados) se utiliza únicamente para implementaciones distribuidas o en clúster. Para obtener más detalles, consulta la Descripción general de la arquitectura y Woodpecker.
Implementar un clúster de Milvus:
Para el modo de servicio de Woodpecker, recomendamos utilizar la próxima versión de Milvus 3.0.1 o una posterior, junto con Woodpecker v0.1.37 o posterior, para beneficiarse de las optimizaciones de limpieza por compactación y de confirmación en grupo.
El siguiente comando implementa un clúster de Milvus con una configuración optimizada para la versión 3.0.2, utilizando Woodpecker como cola de mensajes recomendada:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.2 \
--set woodpecker.enabled=true \
--set woodpecker.image.tag=v0.1.37 \
--set streaming.enabled=true \
--set streaming.woodpecker.embedded=false \
--set indexNode.enabled=false
Qué hace este comando:
- Utiliza Woodpecker como cola de mensajes (recomendado para reducir el mantenimiento)
- Ejecuta Woodpecker como un servicio dedicado (un StatefulSet independiente), no integrado en el nodo de streaming
- Habilita el nuevo componente «Streaming Node » para mejorar el rendimiento
- Desactiva el nodo de índice heredado (ahora el nodo de datos se encarga de esta funcionalidad)
Cambios en la arquitectura de Milvus 2.6.x:
- Cola de mensajes: ahora se recomienda Woodpecker (reduce el mantenimiento de la infraestructura en comparación con Pulsar)
- Nuevo componente: se introduce el nodo de streaming, que viene habilitado por defecto
- Componentes fusionados: el nodo de índice y el nodo de datos se combinan en un único nodo de datos
Para obtener información detallada sobre la arquitectura, consulta la Descripción general de la arquitectura.
Colas de mensajes alternativas: para realizar la implementación con Pulsar, Kafka o RocksMQ en lugar de Woodpecker, consulta «Dependencias opcionales».
Próximos pasos: El comando anterior implementa Milvus con las configuraciones recomendadas. Para uso en producción:
- Utilice la herramienta de dimensionamiento de Milvus para optimizar los ajustes en función del tamaño de sus datos
- Consulte la lista de comprobación de configuraciones del sistema Milvus para conocer las opciones de configuración avanzadas
Notas importantes:
- Denominación de la versión: utiliza únicamente letras, números y guiones (no se permiten puntos)
Para obtener más información, consulta el gráfico Helm de Milvus y la documentación de Helm.
2. Comprueba el estado del clúster de Milvus
Comprueba que la implementación se ha realizado correctamente verificando el estado de los pods:
kubectl get pods
Espera a que todos los pods muestren el estado «Running». Con la configuración v3.0.2, deberías ver pods similares a estos:
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-streamingnode-7b8cfc769c-mqmsm 1/1 Running 0 3m24s
my-release-milvus-woodpecker-0 1/1 Running 0 3m24s
my-release-milvus-woodpecker-1 1/1 Running 0 3m24s
my-release-milvus-woodpecker-2 1/1 Running 0 3m24s
my-release-milvus-woodpecker-3 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
Componentes clave que hay que verificar:
- Componentes de Milvus:
mixcoord,datanode,querynode,proxy,streamingnode - Dependencias:
etcd(metadatos),minio(almacenamiento de objetos),woodpecker(cola de mensajes)
Con streaming.woodpecker.embedded=false, Woodpecker se ejecuta como un StatefulSet dedicado (my-release-milvus-woodpecker, 4 réplicas por defecto —un quórum de 3 nodos más uno de reserva para la tolerancia a fallos; no establezcas woodpecker.replicaCount por debajo de 3) respaldado por un servicio sin interfaz gráfica, que utiliza MinIO como backend de almacenamiento; por lo tanto, el clúster cuenta con un conjunto de pods woodpecker independiente, distinto del nodo de streaming.
También puedes acceder a la interfaz web de Milvus en http://127.0.0.1:9091/webui/ una vez configurado el reenvío de puertos (véase el siguiente paso). Para más detalles, consulta la interfaz web de Milvus.
3. Conectarse a Milvus
Para conectarte a tu clúster de Milvus desde fuera de Kubernetes, debes configurar el reenvío de puertos.
Configurar el reenvío de puertos:
kubectl port-forward service/my-release-milvus 27017:19530
Este comando reenvía el puerto local 27017 al puerto de Milvus 19530. Deberías ver:
Forwarding from 127.0.0.1:27017 -> 19530
Detalles de la conexión:
- Conexión local:
localhost:27017 - Puerto predeterminado de Milvus:
19530
Opciones para el reenvío de puertos:
- Asignar puerto local automáticamente: utiliza
:19530en lugar de27017:19530para que kubectl elija un puerto disponible - Escuchar en todas las interfaces: Añade
--address 0.0.0.0para permitir conexiones desde otros equipos:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - Implementación independiente: Si utilizas el modo independiente, el nombre del servicio sigue siendo el mismo
Mantén este terminal abierto mientras utilizas Milvus. Ahora puedes conectarte a Milvus utilizando cualquier SDK de Milvus en localhost:27017.
(Opcional) Actualizar las configuraciones de Milvus
Puede actualizar las configuraciones de su clúster de Milvus editando el archivo values.yaml y aplicándolo de nuevo.
Crea un archivo «
values.yaml» con las configuraciones deseadas.A continuación se da por supuesto que desea habilitar
proxy.http.extraConfigFiles: user.yaml: |+ proxy: http: enabled: truePara conocer los elementos de configuración aplicables, consulta «Configuración del sistema».
Aplica el archivo `
values.yaml`.
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
Compruebe las configuraciones actualizadas.
helm get values my-releaseLa salida debería mostrar las configuraciones actualizadas.
Acceder a la interfaz web de Milvus
Milvus incluye una herramienta GUI integrada llamada Milvus WebUI a la que puede acceder a través de su navegador. Milvus WebUI mejora la observabilidad del sistema con una interfaz sencilla e intuitiva. Puede utilizar Milvus WebUI 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 recopilación de datos, y ver una lista detallada de las configuraciones de Milvus. Para obtener más información sobre Milvus WebUI, consulta Milvus WebUI
Para habilitar el acceso a la interfaz web de Milvus, es necesario redirigir el puerto del pod del 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 ya puede acceder a la interfaz de usuario web de Milvus en http://localhost:27018.
Instalación sin conexión
Si se encuentra en un entorno con restricciones de red, siga el procedimiento descrito en esta sección para iniciar un clúster de Milvus.
1. Obtener el manifiesto de Milvus
Ejecuta 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 clúster de Milvus y guarda el resultado en un archivo de manifiesto denominado « milvus_manifest.yaml ». Con este manifiesto, puedes instalar un clúster de Milvus con sus componentes y dependencias en pods independientes.
- Para instalar una instancia de Milvus en modo autónomo, en el que todos los componentes de Milvus se encuentran dentro de 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 --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yaml» para generar las plantillas de gráficos de una instancia de Milvus en modo autónomo. - Para modificar las configuraciones de Milvus, descarga la
value.yamlplantilla, introduce en ella los ajustes que desees y utilizahelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlpara generar el manifiesto en consecuencia.
2. Descargar el script de descarga de imágenes
El script de descarga de imágenes está escrito 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. Descargar y guardar las imágenes
Ejecuta el siguiente comando para descargar y guardar las imágenes necesarias.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
Las imágenes se descargan en una subcarpeta llamada « images » dentro del directorio actual.
4. Cargar las imágenes
Ahora puedes cargar las imágenes en los hosts del entorno con acceso restringido de la red de la siguiente manera:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Implementar 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 clúster y reenviar un puerto local a Milvus.
Actualizar el clúster de Milvus en ejecución
Ejecuta el siguiente comando para actualizar tu clúster de Milvus en ejecución a la última versión:
$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
Desinstalar Milvus
Ejecuta el siguiente comando para desinstalar Milvus.
$ helm uninstall my-release
Dependencias opcionales
Esta implementación utiliza Woodpecker como cola de mensajes, etcd para los metadatos y MinIO para el almacenamiento de objetos. Para utilizar una cola de mensajes diferente o conectar un almacenamiento de objetos o metadatos externo, consulta:
- Cola de mensajes: Woodpecker (predeterminada) · Pulsar · Kafka · RocksMQ
- Almacenamiento de objetos: MinIO (predeterminado) · AWS S3 · Azure Blob · GCP Cloud Storage · Aliyun OSS · Tencent COS · Huawei OBS · Compatible con S3
- Metadatos: etcd
El almacenamiento V3 está desactivado por defecto. Actívalo antes de utilizar las funciones que dependen de él. Para conocer los requisitos y las consideraciones de compatibilidad, consulta Almacenamiento V3.
Próximos pasos
Una vez instalado Milvus en Docker, puedes:
Echa un vistazo a «Hello Milvus » para ver de qué es capaz Milvus.
Aprender las operaciones básicas de Milvus:
Implementa tu clúster de Milvus en la nube:
Descubre Milvus WebUI, una interfaz web intuitiva para la observabilidad y la gestión de Milvus.
Descubre Milvus Backup, una herramienta de código abierto para realizar copias de seguridad de los datos de Milvus.
Descubre Birdwatcher, una herramienta de código abierto para la depuración de Milvus y las actualizaciones dinámicas de la configuración.
Descubre Attu, una herramienta GUI de código abierto para la gestión intuitiva de Milvus.