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

milvus-logo
LFAI
  • Home
  • Blog
  • Despliegue de Milvus en Kubernetes: Guía paso a paso para usuarios de Kubernetes

Despliegue de Milvus en Kubernetes: Guía paso a paso para usuarios de Kubernetes

  • Engineering
September 26, 2024
Gael Gu

Milvus es una base de datos vectorial de código abierto diseñada para almacenar, indexar y buscar cantidades masivas de datos no estructurados a través de representaciones vectoriales, lo que la hace perfecta para aplicaciones impulsadas por IA, como la búsqueda por similitud, la búsqueda semántica, la generación aumentada de recuperación(RAG), los motores de recomendación y otras tareas de aprendizaje automático.

Pero lo que hace que Milvus sea aún más potente es su perfecta integración con Kubernetes. Si es aficionado a Kubernetes, sabrá que la plataforma es perfecta para orquestar sistemas escalables y distribuidos. Milvus aprovecha al máximo las capacidades de Kubernetes, permitiéndole desplegar, escalar y gestionar fácilmente los clústeres distribuidos de Milvus. Esta guía le proporcionará una guía clara, paso a paso para configurar Milvus en Kubernetes utilizando el Operador Milvus.

Requisitos previos

Antes de comenzar, asegúrese de contar con los siguientes prerrequisitos:

  • Un clúster Kubernetes en funcionamiento. Si usted está probando localmente, minikube es una gran opción.

  • kubectl instalado y configurado para interactuar con su clúster Kubernetes.

  • Familiaridad con conceptos básicos de Kubernetes como pods, servicios y despliegues.

Paso 1: Instalación de Minikube (para pruebas locales)

Si necesita configurar un entorno local Kubernetes, minikube es la herramienta para usted. Las instrucciones oficiales de instalación se encuentran en la página de inicio de minikube.

1. Instalar Minikube

Visite la página de versiones de minikube y descargue la versión adecuada para su sistema operativo. Para macOS/Linux, puedes utilizar el siguiente comando:

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

2. Inicie Minikube

$ minikube start

3. Interactuar con el clúster

Ahora, puedes interactuar con tus clusters con kubectl dentro de minikube. Si no ha instalado kubectl, minikube descargará la versión apropiada por defecto.

$ minikube kubectl cluster-info

Alternativamente, puede crear un enlace simbólico al binario de minikube llamado kubectl para facilitar su uso.

$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info

Paso 2: Configuración de la StorageClass

En Kubernetes, una StorageClass define los tipos de almacenamiento disponibles para sus cargas de trabajo, proporcionando flexibilidad en la gestión de diferentes configuraciones de almacenamiento. Antes de continuar, debe asegurarse de que haya una StorageClass predeterminada disponible en su clúster. A continuación se explica cómo comprobarlo y configurar una si es necesario.

1. Comprobar StorageClasses instaladas

Para ver las StorageClasses disponibles en su clúster Kubernetes, ejecute el siguiente comando:

$ kubectl get sc

Esto mostrará la lista de clases de almacenamiento instaladas en su clúster. Si una StorageClass predeterminada ya está configurada, se marcará con (default).

2. Configure una StorageClass por defecto (si es necesario)

Si no se ha configurado ninguna StorageClass por defecto, puede crear una definiéndola en un archivo YAML. Utilice el siguiente ejemplo para crear una StorageClass por defecto:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: default-storageclass
provisioner: k8s.io/minikube-hostpath

Esta configuración YAML define un StorageClass llamado default-storageclass que utiliza el aprovisionador minikube-hostpath, comúnmente utilizado en entornos de desarrollo local.

3. Aplicar la StorageClass

Una vez creado el archivo default-storageclass.yaml, aplíquelo a su cluster utilizando el siguiente comando:

$ kubectl apply -f default-storageclass.yaml

Esto configurará la StorageClass predeterminada para su clúster, asegurando que sus necesidades de almacenamiento se gestionen adecuadamente en el futuro.

Paso 3: Instalar Milvus utilizando el Operador Milvus

El Operador Milvus simplifica el despliegue de Milvus en Kubernetes, gestionando el despliegue, escalado y actualizaciones. Antes de instalar el Operador Milvus, necesitará instalar el cert-manager, que proporciona certificados para el servidor webhook utilizado por el Operador Milvus.

1. Instalar cert-manager

Milvus Operator requiere cert-manager para gestionar los certificados para una comunicación segura. Asegúrese de instalar cert-manager versión 1.1.3 o posterior. Para instalarlo, ejecute el siguiente comando:

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml

Tras la instalación, verifique que los pods cert-manager se están ejecutando ejecutando:

$ kubectl get pods -n cert-manager

2. Instale el Operador Milvus

Una vez que cert-manager esté en funcionamiento, puede instalar Milvus Operator. Ejecute el siguiente comando para desplegarlo utilizando kubectl:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

Puede comprobar si el pod Milvus Operator se está ejecutando mediante el siguiente comando:

$ kubectl get pods -n milvus-operator

3. Despliegue de Milvus Cluster

Una vez que el pod Milvus Operator se está ejecutando, puede desplegar un cluster Milvus con el operador. El siguiente comando despliega un cluster Milvus con sus componentes y dependencias en pods separados utilizando las configuraciones por defecto:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Para personalizar la configuración de Milvus, tendrá que sustituir el archivo YAML por su propio archivo YAML de configuración. Además de editar o crear manualmente el archivo, puede utilizar la Herramienta de dimensionamiento de Milvus para ajustar las configuraciones y luego descargar el archivo YAML correspondiente.

Para personalizar las configuraciones de Milvus, debe reemplazar el archivo YAML predeterminado por su propia configuración. Puede editar o crear manualmente este archivo, adaptándolo a sus requisitos específicos.

Alternativamente, puede utilizar la Herramienta de dimensionamiento de Milvus para un enfoque más racionalizado. Esta herramienta le permite ajustar varias configuraciones, como la asignación de recursos y las opciones de almacenamiento, y luego descargar el archivo YAML correspondiente con sus configuraciones deseadas. Esto garantiza que su despliegue de Milvus esté optimizado para su caso de uso específico.

Figura: Herramienta de dimensionamiento de Milvus

El despliegue puede tardar algún tiempo en completarse. Puede comprobar el estado de su cluster Milvus a través del comando:

$ kubectl get milvus my-release

Una vez que su clúster Milvus esté listo, todos los pods del clúster Milvus deberían estar ejecutándose o completados:

$ kubectl get pods

Paso 4: Acceso a su cluster Milvus

Una vez desplegado su cluster Milvus, necesita acceder a él reenviando un puerto local al puerto de servicio Milvus. Siga estos pasos para recuperar el puerto de servicio y configurar el reenvío de puertos.

1. Obtener el puerto de servicio

En primer lugar, identifique el puerto de servicio utilizando el siguiente comando. Sustituya <YOUR_MILVUS_PROXY_POD> por el nombre de su pod proxy Milvus, que normalmente empieza por my-release-milvus-proxy-:

$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

Este comando devolverá el número de puerto que está utilizando su servicio Milvus.

2. Reenvíe el puerto

Para acceder a su cluster Milvus localmente, reenvíe un puerto local al puerto de servicio utilizando el siguiente comando. Sustituya <YOUR_LOCAL_PORT> por el puerto local que desea utilizar y <YOUR_SERVICE_PORT> por el puerto de servicio obtenido en el paso anterior:

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>

Este comando permite el reenvío de puertos para escuchar en todas las direcciones IP de la máquina anfitriona. Si sólo necesita que el servicio escuche en localhost, puede omitir la opción --address 0.0.0.0.

Una vez configurado el reenvío de puertos, puede acceder a su cluster Milvus a través del puerto local especificado para otras operaciones o integraciones.

Paso 5: Conectarse a Milvus utilizando Python SDK

Con su cluster Milvus en funcionamiento, ahora puede interactuar con él utilizando cualquier SDK Milvus. En este ejemplo, utilizaremos PyMilvus, el SDK Python de Milvus , para conectarnos al cluster y realizar operaciones básicas.

1. Instalar PyMilvus

Para interactuar con Milvus a través de Python, necesita instalar el paquete pymilvus:

$ pip install pymilvus

2. Conectarse a Milvus

El siguiente es un script Python de ejemplo que se conecta a su cluster Milvus y demuestra cómo realizar operaciones básicas como crear una colección.

from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
   client.drop_collection(collection_name)
client.create_collection(
   collection_name=collection_name,
   dimension=768,  # The vectors we will use in this demo has 768 dimensions
)

Explicación:

  • Conectarse a Milvus: El script se conecta al servidor Milvus que se ejecuta en localhost utilizando el puerto local que configuró en el Paso 4.

  • Crear una colección: Comprueba si ya existe una colección denominada example_collection, la elimina en caso afirmativo y, a continuación, crea una nueva colección con vectores de 768 dimensiones.

Este script establece una conexión con el cluster Milvus y crea una colección, sirviendo como punto de partida para operaciones más complejas como insertar vectores y realizar búsquedas de similitud.

Conclusión

El despliegue de Milvus en una configuración distribuida en Kubernetes desbloquea potentes capacidades para la gestión de datos vectoriales a gran escala, lo que permite una escalabilidad perfecta y aplicaciones de alto rendimiento basadas en IA. Siguiendo esta guía, usted ha aprendido cómo configurar Milvus usando el Operador Milvus, haciendo el proceso ágil y eficiente.

A medida que continúe explorando Milvus, considere escalar su clúster para satisfacer las crecientes demandas o implementarlo en plataformas en la nube como Amazon EKS, Google Cloud o Microsoft Azure. Para una mejor gestión y supervisión, herramientas como Milvus Backup, Birdwatcher y Attu ofrecen un valioso apoyo para mantener la salud y el rendimiento de sus despliegues.

Ahora está listo para aprovechar todo el potencial de Milvus en Kubernetes: ¡feliz despliegue! 🚀

Recursos adicionales

Like the article? Spread the word

Sigue Leyendo