Eseguire Milvus su Kubernetes con Helm

Questa pagina illustra come avviare un'istanza di Milvus in Kubernetes utilizzando i chart Helm di Milvus.

Panoramica

Helm utilizza un formato di pacchettizzazione denominato "chart". Un chart è un insieme di file che descrivono un insieme correlato di risorse Kubernetes. Milvus fornisce una serie di chart per facilitare la distribuzione delle dipendenze e dei componenti di Milvus.

Prerequisiti

  • Installare la CLI di Helm.

  • Creare un cluster K8s.

  • Installare una StorageClass. È possibile verificare la StorageClass installata come segue.

    $ kubectl get sc
    
    NAME                  PROVISIONER                  RECLAIMPOLICY    VOLUMEBIINDINGMODE    ALLOWVOLUMEEXPANSION     AGE
    standard (default)    k8s.io/minikube-hostpath     Delete           Immediate             false 
    
  • Verificare i requisiti hardware e software prima dell’installazione.

  • Prima di installare Milvus, si consiglia di utilizzare lo strumento Milvus Sizing Tool per stimare i requisiti hardware in base alla dimensione dei dati. Ciò contribuisce a garantire prestazioni ottimali e un'allocazione ottimale delle risorse per l'installazione di Milvus.

Se si riscontrano problemi durante il download dell'immagine, contattarci all'indirizzo community@zilliz.com fornendo i dettagli del problema e forniremo l'assistenza necessaria.

Installare il Helm Chart di Milvus

Prima di installare gli Helm Chart di Milvus, è necessario aggiungere il repository Helm di Milvus.

helm repo add zilliztech https://zilliztech.github.io/milvus-helm/

Il repository dei grafici Helm di Milvus all'indirizzo https://github.com/milvus-io/milvus-helm è stato archiviato. Ora utilizziamo il nuovo repository all'indirizzo https://github.com/zilliztech/milvus-helm. Il repository archiviato è ancora disponibile per i grafici fino alla versione 4.0.31, ma per le versioni successive è necessario utilizzare il nuovo repository.

Quindi, scaricate i chart Milvus dal repository come segue:

$ helm repo update

È sempre possibile eseguire questo comando per scaricare i chart Helm Milvus più recenti.

Installazione online

1. Distribuire un cluster Milvus

Una volta installato il chart Helm, è possibile avviare Milvus su Kubernetes. Questa sezione illustra come distribuire un cluster Milvus.

Preferisci invece una distribuzione in modalità standalone?

Se preferisci distribuire Milvus in modalità standalone (singolo nodo) per lo sviluppo o il test, utilizza questo comando:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set cluster.enabled=false \
  --set pulsarv3.enabled=false \
  --set standalone.messageQueue=woodpecker \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true

Nota: la modalità autonoma utilizza Woodpecker come coda di messaggi predefinita e abilita il componente Streaming Node. Per ulteriori dettagli, consultare la Panoramica dell'architettura e Utilizzo di Woodpecker.

Distribuzione del cluster Milvus:

Il comando seguente distribuisce un cluster Milvus con impostazioni ottimizzate per la versione 2.6.24, utilizzando Woodpecker come coda di messaggi consigliata:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Cosa fa questo comando:

  • Utilizza Woodpecker come coda dei messaggi (consigliato per ridurre la manutenzione)
  • Abilita il nuovo componente Streaming Node per migliorare le prestazioni
  • Disabilita il nodo di indicizzazione legacy (la funzionalità è ora gestita dal nodo dati)
  • Disabilita Pulsar per utilizzare invece Woodpecker

Modifiche all’architettura in Milvus 2.6.x:

  • Coda dei messaggi: ora si consiglia Woodpecker (riduce la manutenzione dell’infrastruttura rispetto a Pulsar)
  • Nuovo componente: viene introdotto il nodo di streaming, abilitato per impostazione predefinita
  • Componenti unificati: il nodo indice e il nodo dati sono stati combinati in un unico nodo dati

Per i dettagli completi sull'architettura, consultare la Panoramica dell'architettura.

Opzioni alternative per la coda dei messaggi:

Se si preferisce utilizzare Pulsar (scelta tradizionale) anziché Woodpecker:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Passi successivi: Il comando sopra riportato distribuisce Milvus con le configurazioni consigliate. Per l’uso in produzione:

Note importanti:

  • Denominazione delle versioni: utilizzare solo lettere, numeri e trattini (non sono ammessi i punti)
  • Kubernetes v1.25+: se si riscontrano problemi con PodDisruptionBudget, utilizzare questa soluzione alternativa:
    helm install my-release zilliztech/milvus \
      --set pulsar.bookkeeper.pdb.usePolicy=false \
      --set pulsar.broker.pdb.usePolicy=false \
      --set pulsar.proxy.pdb.usePolicy=false \
      --set pulsar.zookeeper.pdb.usePolicy=false
    

Per ulteriori informazioni, consultare il grafico Helm di Milvus e la documentazione di Helm.

2. Verifica lo stato del cluster Milvus

Verifica che la distribuzione sia andata a buon fine controllando lo stato dei pod:

kubectl get pods

Attendere che tutti i pod mostrino lo stato “Running”. Con la configurazione v2.6.24, si dovrebbero vedere pod simili a:

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-streaming-node-xxxxxxxxx       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

Componenti chiave da verificare:

  • Componenti Milvus: mixcoord, datanode, querynode, proxy, streaming-node
  • Dipendenze: etcd (metadati), minio (archiviazione oggetti), pulsar (coda di messaggi)

È inoltre possibile accedere all’interfaccia utente web di Milvus all’indirizzo http://127.0.0.1:9091/webui/ una volta configurato il reindirizzamento delle porte (vedere il passaggio successivo). Per ulteriori dettagli, consultare la documentazione relativa all’interfaccia utente web di Milvus.

3. Connettersi a Milvus

Per connettersi al proprio cluster Milvus dall’esterno di Kubernetes, è necessario configurare il reindirizzamento delle porte.

Configurare il port forwarding:

kubectl port-forward service/my-release-milvus 27017:19530

Questo comando inoltra la porta locale 27017 alla porta Milvus 19530. Dovresti vedere:

Forwarding from 127.0.0.1:27017 -> 19530

Dettagli della connessione:

  • Connessione locale: localhost:27017
  • Porta predefinita di Milvus: 19530

Opzioni per il port forwarding:

  • Assegnazione automatica della porta locale: utilizzare :19530 invece di 27017:19530 per consentire a kubectl di scegliere una porta disponibile
  • Ascolto su tutte le interfacce: Aggiungi --address 0.0.0.0 per consentire connessioni da altri computer:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • Distribuzione autonoma: se si utilizza la modalità autonoma, il nome del servizio rimane lo stesso

Tenere aperto questo terminale mentre si utilizza Milvus. Ora è possibile connettersi a Milvus utilizzando qualsiasi SDK Milvus all’indirizzo localhost:27017.

(Facoltativo) Aggiornamento delle configurazioni di Milvus

È possibile aggiornare le configurazioni del proprio cluster Milvus modificando il file values.yaml e applicandolo nuovamente.

  1. Creare un file values.yaml con le configurazioni desiderate.

    Quanto segue presuppone che si desideri abilitare l'proxy.http.

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    Per le voci di configurazione applicabili, fare riferimento alla sezione Configurazione di sistema.

  2. Applicare il file ` values.yaml `.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. Verificare le configurazioni aggiornate.

    helm get values my-release
    

    L'output dovrebbe mostrare le configurazioni aggiornate.

Accedere a Milvus WebUI

Milvus include uno strumento GUI integrato denominato Milvus WebUI, a cui è possibile accedere tramite il browser. Milvus Web UI migliora l’osservabilità del sistema grazie a un’interfaccia semplice e intuitiva. È possibile utilizzare Milvus Web UI per monitorare le statistiche e le metriche dei componenti e delle dipendenze di Milvus, verificare i dettagli relativi al database e alle raccolte ed elencare le configurazioni dettagliate di Milvus. Per ulteriori dettagli su Milvus WebUI, consultare Milvus WebUI

Per abilitare l'accesso a Milvus WebUI, è necessario eseguire il port forwarding del pod proxy su una porta locale.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091

Ora è possibile accedere a Milvus WebUI all’indirizzo http://localhost:27018.

Installazione offline

Se ci si trova in un ambiente con restrizioni di rete, seguire la procedura descritta in questa sezione per avviare un cluster Milvus.

1. Ottenere il manifesto di Milvus

Eseguire il comando seguente per ottenere il manifesto di Milvus.

$ helm template my-release zilliztech/milvus > milvus_manifest.yaml

Il comando sopra riportato genera i modelli di chart per un cluster Milvus e salva l'output in un file di manifesto denominato milvus_manifest.yaml. Utilizzando questo manifesto, è possibile installare un cluster Milvus con i relativi componenti e dipendenze in pod separati.

  • Per installare un'istanza di Milvus in modalità standalone, in cui tutti i componenti di Milvus sono contenuti in un unico pod, è necessario eseguire invece helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml per generare i modelli di chart per un'istanza di Milvus in modalità standalone.
  • Per modificare le configurazioni di Milvus, scaricare il value.yaml modello, inserirvi le impostazioni desiderate e utilizzare helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml per generare il manifesto di conseguenza.

2. Scaricare lo script per il recupero delle immagini

Lo script per il download delle immagini è scritto in Python. È necessario scaricare lo script insieme alle sue dipendenze dal file 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. Scaricare e salvare le immagini

Eseguire il seguente comando per scaricare e salvare le immagini richieste.

$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml

Le immagini vengono scaricate in una sottocartella denominata images nella directory corrente.

4. Caricare le immagini

Ora è possibile caricare le immagini sugli host nell’ambiente con restrizioni di rete come segue:

$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done

5. Distribuire Milvus

$ kubectl apply -f milvus_manifest.yaml

A questo punto, è possibile seguire i passaggi 2 e 3 della procedura di installazione online per verificare lo stato del cluster e inoltrare una porta locale a Milvus.

Aggiornamento del cluster Milvus in esecuzione

Eseguire il seguente comando per aggiornare il cluster Milvus in esecuzione all'ultima versione:

$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values

Disinstallazione di Milvus

Eseguire il seguente comando per disinstallare Milvus.

$ helm uninstall my-release

Prossimi passi

Dopo aver installato Milvus in Docker, è possibile: