🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Distribuzione di Milvus su Kubernetes: Una guida passo-passo per gli utenti di Kubernetes

Distribuzione di Milvus su Kubernetes: Una guida passo-passo per gli utenti di Kubernetes

  • Engineering
September 26, 2024
Gael Gu

Milvus è un database vettoriale open source progettato per archiviare, indicizzare e ricercare enormi quantità di dati non strutturati attraverso rappresentazioni vettoriali, il che lo rende perfetto per le applicazioni orientate all'intelligenza artificiale, come la ricerca per similarità, la ricerca semantica, la retrieval augmented generation(RAG), i motori di raccomandazione e altre attività di apprendimento automatico.

Ma ciò che rende Milvus ancora più potente è la sua perfetta integrazione con Kubernetes. Se siete appassionati di Kubernetes, sapete che la piattaforma è perfetta per l'orchestrazione di sistemi scalabili e distribuiti. Milvus sfrutta appieno le capacità di Kubernetes, consentendo di distribuire, scalare e gestire facilmente cluster Milvus distribuiti. Questa guida fornisce una guida chiara e passo passo per configurare Milvus su Kubernetes utilizzando Milvus Operator.

Prerequisiti

Prima di iniziare, assicuratevi di disporre dei seguenti prerequisiti:

  • Un cluster Kubernetes attivo e funzionante. Se si tratta di test locali, minikube è un'ottima scelta.

  • kubectl installato e configurato per interagire con il cluster Kubernetes.

  • familiarità con i concetti di base di Kubernetes, come pod, servizi e distribuzioni.

Passo 1: Installazione di Minikube (per test locali)

Se avete bisogno di configurare un ambiente Kubernetes locale, minikube è lo strumento che fa per voi. Le istruzioni ufficiali per l'installazione si trovano nella pagina di avvio di minikube.

1. Installare Minikube

Visitate la pagina dei rilasci di minikube e scaricate la versione appropriata per il vostro sistema operativo. Per macOS/Linux, si può usare il seguente 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. Avviare Minikube

$ minikube start

3. Interagire con il cluster

Ora è possibile interagire con i cluster con kubectl all'interno di minikube. Se non avete installato kubectl, minikube scaricherà la versione appropriata per impostazione predefinita.

$ minikube kubectl cluster-info

In alternativa, si può creare un collegamento simbolico al binario di minikube, chiamato kubectl, per facilitarne l'uso.

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

Passo 2: Configurazione della StorageClass

In Kubernetes, una StorageClass definisce i tipi di storage disponibili per i carichi di lavoro, fornendo flessibilità nella gestione di diverse configurazioni di storage. Prima di procedere, è necessario assicurarsi che nel cluster sia disponibile una StorageClass predefinita. Ecco come verificare e, se necessario, configurare una StorageClass.

1. Controllare le StorageClass installate

Per vedere le StorageClass disponibili nel cluster Kubernetes, eseguire il seguente comando:

$ kubectl get sc

Questo visualizzerà l'elenco delle classi di storage installate nel cluster. Se una StorageClass predefinita è già configurata, sarà contrassegnata da (default).

2. Configurare una StorageClass predefinita (se necessario)

Se non è stata impostata una StorageClass predefinita, è possibile crearne una definendola in un file YAML. Utilizzare l'esempio seguente per creare una StorageClass predefinita:

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

Questa configurazione YAML definisce un StorageClass chiamato default-storageclass che utilizza il provisioner minikube-hostpath, comunemente usato negli ambienti di sviluppo locali.

3. Applicare la StorageClass

Una volta creato il file default-storageclass.yaml, applicarlo al cluster con il seguente comando:

$ kubectl apply -f default-storageclass.yaml

In questo modo si imposterà la StorageClass predefinita per il cluster, assicurando che le esigenze di storage siano gestite correttamente in futuro.

Passo 3: Installazione di Milvus con l'Operatore Milvus

L'Operatore Milvus semplifica la distribuzione di Milvus su Kubernetes, gestendo la distribuzione, il ridimensionamento e gli aggiornamenti. Prima di installare Milvus Operator, è necessario installare il cert-manager, che fornisce i certificati per il server webhook utilizzato da Milvus Operator.

1. Installare cert-manager

Milvus Operator richiede un cert-manager per gestire i certificati per la comunicazione sicura. Assicurarsi di installare cert-manager versione 1.1.3 o successiva. Per installarlo, eseguire il seguente comando:

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

Dopo l'installazione, verificare che i pod cert-manager siano in esecuzione eseguendo:

$ kubectl get pods -n cert-manager

2. Installare l'operatore Milvus

Una volta che il cert-manager è attivo e funzionante, è possibile installare Milvus Operator. Eseguire il seguente comando per distribuirlo usando kubectl:

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

È possibile verificare se il pod Milvus Operator è in esecuzione utilizzando il seguente comando:

$ kubectl get pods -n milvus-operator

3. Distribuire il cluster Milvus

Una volta che il pod Milvus Operator è in esecuzione, è possibile distribuire un cluster Milvus con l'operatore. Il comando seguente distribuisce un cluster Milvus con i suoi componenti e le sue dipendenze in pod separati, utilizzando le configurazioni predefinite:

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

Per personalizzare le impostazioni di Milvus, è necessario sostituire il file YAML con il proprio file YAML di configurazione. Oltre a modificare o creare manualmente il file, è possibile utilizzare Milvus Sizing Tool per regolare le configurazioni e scaricare il file YAML corrispondente.

Per personalizzare le impostazioni di Milvus, è necessario sostituire il file YAML predefinito con la propria configurazione. È possibile modificare o creare manualmente questo file, adattandolo alle proprie esigenze specifiche.

In alternativa, è possibile utilizzare lo strumento di dimensionamento di Milvus per un approccio più semplice. Questo strumento consente di regolare varie impostazioni, come l'allocazione delle risorse e le opzioni di archiviazione, per poi scaricare il file YAML corrispondente con le configurazioni desiderate. In questo modo si garantisce che la distribuzione di Milvus sia ottimizzata per il caso d'uso specifico.

Figura: Strumento di dimensionamento di Milvus

La distribuzione potrebbe richiedere un po' di tempo per essere completata. È possibile controllare lo stato del cluster Milvus tramite il comando:

$ kubectl get milvus my-release

Una volta che il cluster Milvus è pronto, tutti i pod nel cluster Milvus dovrebbero essere in esecuzione o completati:

$ kubectl get pods

Passo 4: Accesso al cluster Milvus

Una volta distribuito il cluster Milvus, è necessario accedervi inoltrando una porta locale alla porta di servizio di Milvus. Seguite questi passaggi per recuperare la porta di servizio e impostare l'inoltro della porta.

1. Recupero della porta di servizio

Innanzitutto, identificate la porta del servizio utilizzando il seguente comando. Sostituire <YOUR_MILVUS_PROXY_POD> con il nome del pod proxy Milvus, che di solito inizia con my-release-milvus-proxy-:

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

Questo comando restituirà il numero di porta che il servizio Milvus sta utilizzando.

2. Inoltrare la porta

Per accedere al cluster Milvus localmente, inoltrare una porta locale alla porta del servizio usando il seguente comando. Sostituire <YOUR_LOCAL_PORT> con la porta locale che si desidera utilizzare e <YOUR_SERVICE_PORT> con la porta del servizio recuperata nel passaggio precedente:

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

Questo comando consente l'inoltro della porta in ascolto su tutti gli indirizzi IP della macchina host. Se si desidera che il servizio sia in ascolto solo su localhost, si può omettere l'opzione --address 0.0.0.0.

Una volta impostato il port-forwarding, è possibile accedere al cluster Milvus tramite la porta locale specificata per ulteriori operazioni o integrazioni.

Passo 5: Connessione a Milvus con l'SDK Python

Con il vostro cluster Milvus attivo e funzionante, potete ora interagire con esso utilizzando qualsiasi SDK Milvus. In questo esempio, useremo PyMilvus, l'SDK Python di Milvus , per connetterci al cluster ed eseguire le operazioni di base.

1. Installare PyMilvus

Per interagire con Milvus tramite Python, è necessario installare il pacchetto pymilvus:

$ pip install pymilvus

2. Connettersi a Milvus

Di seguito è riportato un esempio di script Python che si connette al cluster Milvus e dimostra come eseguire operazioni di base come la creazione di una collezione.

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
)

Spiegazione:

  • Connettersi a Milvus: Lo script si connette al server Milvus in esecuzione su localhost utilizzando la porta locale impostata al punto 4.

  • Creare una raccolta: Controlla se esiste già una raccolta denominata example_collection, in caso affermativo la elimina e crea una nuova raccolta con vettori di 768 dimensioni.

Questo script stabilisce una connessione al cluster Milvus e crea una collezione, che serve come punto di partenza per operazioni più complesse come l'inserimento di vettori e l'esecuzione di ricerche di similarità.

Conclusione

L'implementazione di Milvus in una configurazione distribuita su Kubernetes sblocca potenti funzionalità per la gestione di dati vettoriali su larga scala, consentendo una scalabilità senza soluzione di continuità e applicazioni AI ad alte prestazioni. Seguendo questa guida, avete imparato a configurare Milvus utilizzando Milvus Operator, rendendo il processo più semplice ed efficiente.

Continuando a esplorare Milvus, si può prendere in considerazione la possibilità di scalare il cluster per soddisfare le esigenze crescenti o di distribuirlo su piattaforme cloud come Amazon EKS, Google Cloud o Microsoft Azure. Per migliorare la gestione e il monitoraggio, strumenti come Milvus Backup, Birdwatcher e Attu offrono un valido supporto per mantenere la salute e le prestazioni delle vostre implementazioni.

Ora siete pronti a sfruttare tutto il potenziale di Milvus su Kubernetes: buona distribuzione! 🚀

Altre risorse

Like the article? Spread the word

Continua a Leggere