Distribuzione di Milvus su Kubernetes: Una guida passo-passo per gli utenti di Kubernetes
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
- Prerequisiti
- Passo 1: Installazione di Minikube (per test locali)
- Passo 2: Configurazione della StorageClass
- Passo 3: Installazione di Milvus con l'Operatore Milvus
- Passo 4: Accesso al cluster Milvus
- Passo 5: Connessione a Milvus con l'SDK Python
- Conclusione
- Altre risorse
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word