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 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 milvus https://zilliztech.github.io/milvus-helm/
El repositorio de Milvus Helm Charts en https://github.com/milvus-io/milvus-helm
ha sido archivado y puede obtener más actualizaciones en https://github.com/zilliztech/milvus-helm
como se indica a continuación:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
El repositorio archivado sigue disponible para los gráficos hasta la versión 4.0.31. Para versiones posteriores, utilice el nuevo repositorio.
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 guiará a través de los pasos para iniciar Milvus.
$ helm install my-release milvus/milvus
En el comando anterior, my-release
es el nombre de la versión y milvus/milvus
es el repositorio de gráficos instalado localmente. Para utilizar un nombre diferente, sustituya my-release
por el que considere oportuno.
El comando anterior despliega un cluster Milvus con sus componentes y dependencias utilizando las configuraciones por defecto. Para personalizar estas configuraciones, le recomendamos que utilice la herramienta Milvus Sizing Tool para ajustar las configuraciones en función del tamaño real de sus datos y, a continuación, descargue el archivo YAML correspondiente. Para saber más sobre los parámetros de configuración, consulte Milvus System Configurations Checklist.
- El nombre de la versión sólo debe contener letras, números y guiones. Los puntos no están permitidos en el nombre de la versión.
- La línea de comandos por defecto instala la versión cluster de Milvus cuando se instala Milvus con Helm. Se necesita una configuración adicional cuando se instala Milvus de forma independiente.
- De acuerdo con la guía de migración de API obsoleta de Kubernetes, la versión de la API policy/v1beta1 de PodDisruptionBudget ya no se sirve a partir de v1.25. Se recomienda migrar los manifiestos y clientes de API para utilizar la versión de API policy/v1 en su lugar.
Como solución para los usuarios que aún utilizan la versión de la API policy/v1beta1 de PodDisruptionBudget en Kubernetes v1.25 y posteriores, puede ejecutar el siguiente comando para instalar Milvus:
helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
- Consulte Milvus Helm Chart y Helm para obtener más información.
2. Comprobar el estado del clúster Milvus
Ejecute el siguiente comando para comprobar el estado de todos los pods en su cluster Milvus.
$ kubectl get pods
Una vez que todos los pods estén funcionando, la salida del comando anterior debería ser similar a la siguiente:
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-indexnode-5c5f7b5bd9-l8hjg 1/1 Running 0 3m24s
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-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
3. Reenvíe un puerto local a Milvus
Ejecute el siguiente comando para obtener el puerto en el que sirve su cluster Milvus.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
La salida muestra que la instancia de Milvus sirve en el puerto por defecto 19530.
Si ha desplegado Milvus en modo autónomo, cambie el nombre del pod de my-release-milvus-proxy-xxxxxxxxxx-xxxxx
a my-release-milvus-xxxxxxxxxx-xxxxx
.
A continuación, ejecute el siguiente comando para reenviar un puerto local al puerto en el que sirve Milvus.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Opcionalmente, puede utilizar :19530
en lugar de 27017:19530
en el comando anterior para dejar que kubectl
asigne un puerto local para usted de modo que no tenga que gestionar conflictos de puertos.
Por defecto, el reenvío de puertos de kubectl sólo escucha en localhost
. Utilice la bandera address
si desea que Milvus escuche en las direcciones IP seleccionadas o en todas. El siguiente comando hace que port-forward escuche en todas las direcciones IP de la máquina anfitriona.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Instalación fuera de línea
Si se encuentra en un entorno con restricciones de red, siga el procedimiento de esta sección para iniciar un cluster Milvus.
1. Obtener el manifiesto de Milvus
Ejecute el siguiente comando para obtener el manifiesto de Milvus.
$ helm template my-release milvus/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 pulsar.enabled=false milvus/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 utilicehelm template -f values.yaml my-release milvus/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
Desinstalar Milvus
Ejecute el siguiente comando para desinstalar Milvus.
$ helm uninstall my-release
Lo que sigue
Una vez instalado Milvus en Docker, puede:
Comprobar Hello Milvus para ver qué puede hacer Milvus.
Aprender las operaciones básicas de Milvus:
Despliegue su clúster Milvus en nubes:
Explore Milvus Backup, una herramienta de código abierto para realizar copias de seguridad de los datos de Milvus.
Explore Birdwatcher, una herramienta de código abierto para depurar Milvus y actualizaciones dinámicas de configuración.
Explore Attu, una herramienta GUI de código abierto para la gestión intuitiva de Milvus.