Eseguire Milvus in Kubernetes con Helm

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

Panoramica

Helm utilizza un formato di packaging chiamato chart. Un grafico è una raccolta di file che descrivono un insieme correlato di risorse Kubernetes. Milvus fornisce una serie di grafici per aiutare a distribuire le dipendenze e i componenti di Milvus.

Prerequisiti

  • Installare Helm CLI.

  • 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 Milvus Sizing Tool per stimare i requisiti hardware in base alle dimensioni dei dati. Questo aiuta a garantire prestazioni e allocazione delle risorse ottimali per l'installazione di Milvus.

Se si riscontrano problemi nell'estrazione dell'immagine, contattateci all'indirizzo community@zilliz.com con i dettagli del problema e vi forniremo il supporto necessario.

Installare Milvus Helm Chart

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

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

Il repository di Milvus Helm Charts all'indirizzo https://github.com/milvus-io/milvus-helm è stato archiviato. Ora si utilizza 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, mentre per le versioni successive si utilizza il nuovo repository.

Quindi prelevare i grafici di Milvus dal repository come segue:

$ helm repo update

È sempre possibile eseguire questo comando per recuperare i grafici Milvus Helm più recenti.

Installazione online

1. Distribuire un cluster Milvus

Una volta installato il grafico Helm, è possibile avviare Milvus su Kubernetes. Questa sezione vi guida nella distribuzione di un cluster Milvus.

Avete bisogno di una distribuzione standalone?

Se preferite distribuire Milvus in modalità standalone (nodo singolo) per lo sviluppo o i test, utilizzate questo comando:

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

Nota: la modalità standalone utilizza Woodpecker come coda di messaggi predefinita e abilita il componente Streaming Node. Per i dettagli, fate riferimento alla Panoramica dell'architettura e all'uso di Woodpecker.

Distribuire il cluster Milvus:

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

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

Cosa fa questo comando:

  • Utilizza Woodpecker come coda di messaggi (consigliato per ridurre la manutenzione).
  • Abilita il nuovo componente Streaming Node per migliorare le prestazioni.
  • Disabilita il vecchio Index Node (la funzionalità è ora gestita dal Data Node).
  • Disabilita Pulsar per utilizzare invece Woodpecker.

Modifiche all'architettura in Milvus 2.6.x:

  • Coda dei messaggi: Woodpecker è ora raccomandato (riduce la manutenzione dell'infrastruttura rispetto a Pulsar)
  • Nuovo componente: Il nodo di streaming è stato introdotto e abilitato per impostazione predefinita.
  • Componenti fusi: Index Node e Data Node sono stati combinati in un unico Data Node.

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

Opzioni alternative per la coda dei messaggi:

Se si preferisce usare Pulsar (scelta tradizionale) invece di Woodpecker:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.16 \
  --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 release: Usare solo lettere, numeri e trattini (non sono ammessi punti).
  • Kubernetes v1.25+: se si verificano problemi di PodDisruptionBudget, utilizzare questo workaround:
    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 di Milvus Helm e la documentazione di Helm.

2. Controllare lo stato del cluster Milvus

Verificate che l'installazione 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.16, 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 degli oggetti), pulsar (coda di messaggi)

È inoltre possibile accedere alla WebUI di Milvus all'indirizzo http://127.0.0.1:9091/webui/ una volta impostato il port forwarding (vedere il passo successivo). Per i dettagli, consultare Milvus WebUI.

3. Connettersi a Milvus

Per connettersi al cluster Milvus dall'esterno di Kubernetes, è necessario impostare il port forwarding.

Impostare il port forwarding:

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

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

Forwarding from 127.0.0.1:27017 -> 19530

Dettagli della connessione:

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

Opzioni per l'inoltro della porta:

  • Assegnazione automatica della porta locale: Utilizzare :19530 invece di 27017:19530 per permettere a kubectl di scegliere una porta disponibile.
  • Ascolta su tutte le interfacce: Aggiungere --address 0.0.0.0 per consentire le connessioni da altre macchine:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • Distribuzione standalone: Se si utilizza la modalità standalone, il nome del servizio rimane invariato.

Mantenere questo terminale aperto durante l'utilizzo di Milvus. Ora è possibile connettersi a Milvus utilizzando qualsiasi SDK Milvus all'indirizzo localhost:27017.

(Opzionale) Aggiornare le configurazioni di Milvus

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

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

    Di seguito si presuppone che si voglia abilitare proxy.http.

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

    Per le voci di configurazione applicabili, fare riferimento a Configurazione del sistema.

  2. Applicare il file values.yaml.

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

    helm get values my-release
    

    L'output dovrebbe mostrare le configurazioni aggiornate.

Accesso alla WebUI di Milvus

Milvus viene fornito con uno strumento GUI integrato, chiamato Milvus WebUI, a cui si può accedere tramite il browser. Milvus WebUI migliora l'osservabilità del sistema con un'interfaccia semplice e intuitiva. Con Milvus Web UI si possono osservare le statistiche e le metriche dei componenti e delle dipendenze di Milvus, controllare i dettagli del database e della raccolta ed elencare le configurazioni dettagliate di Milvus. Per maggiori informazioni su Milvus Web UI, vedere Milvus WebUI.

Per abilitare l'accesso all'interfaccia web di Milvus, è necessario effettuare il port-forward 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 all'interfaccia web di Milvus all'indirizzo http://localhost:27018.

Installazione offline

Se vi trovate in un ambiente con limitazioni di rete, seguite la procedura di questa sezione per avviare un cluster Milvus.

1. Ottenere il manifesto di Milvus

Eseguire il seguente comando per ottenere il manifest di Milvus.

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

Il comando precedente esegue il rendering dei modelli di grafico per un cluster Milvus e salva l'output in un file di manifest chiamato milvus_manifest.yaml. Utilizzando questo manifest, è possibile installare un cluster Milvus con i suoi componenti e le sue dipendenze in pod separati.

  • Per installare un'istanza di Milvus in modalità standalone, dove tutti i componenti di Milvus sono contenuti in un singolo pod, si deve invece eseguire 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 eseguire il rendering dei modelli di grafico per un'istanza di Milvus in modalità standalone.
  • Per modificare le configurazioni di Milvus, scaricare il modello value.yaml scaricare il modello, inserirvi le impostazioni desiderate e utilizzare helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml per eseguire il rendering del manifest di conseguenza.

2. Scaricare lo script di estrazione delle immagini

Lo script di estrazione delle immagini è sviluppato in Python. È necessario scaricare lo script insieme alle sue dipendenze nel 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. Estrarre e salvare le immagini

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

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

Le immagini vengono estratte 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 dell'installazione online per controllare lo stato del cluster e inoltrare una porta locale a Milvus.

Aggiornamento del cluster Milvus in esecuzione

Eseguite il seguente comando per aggiornare il cluster Milvus in esecuzione alla versione più recente:

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

Disinstallare Milvus

Eseguite il seguente comando per disinstallare Milvus.

$ helm uninstall my-release

Cosa succede dopo

Dopo aver installato Milvus in Docker, è possibile: