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 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 milvus https://zilliztech.github.io/milvus-helm/
Il repository di Milvus Helm Charts all'indirizzo https://github.com/milvus-io/milvus-helm
è stato archiviato ed è possibile ottenere ulteriori aggiornamenti da https://github.com/zilliztech/milvus-helm
come segue:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
Il repo archiviato è ancora disponibile per i grafici fino alla versione 4.0.31. Per le versioni successive, utilizzare invece il nuovo repo.
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 guiderà attraverso le fasi di avvio di Milvus.
$ helm install my-release milvus/milvus
Nel comando precedente, my-release
è il nome della release e milvus/milvus
è il repository del grafico installato localmente. Per usare un nome diverso, sostituire my-release
con quello che si ritiene opportuno.
Il comando precedente distribuisce un cluster Milvus con i suoi componenti e le sue dipendenze utilizzando le configurazioni predefinite. Per personalizzare queste impostazioni, si consiglia di usare Milvus Sizing Tool per regolare le configurazioni in base alle dimensioni effettive dei dati e scaricare il file YAML corrispondente. Per saperne di più sui parametri di configurazione, consultare la lista di controllo delle configurazioni del sistema Milvus.
- Il nome della release deve contenere solo lettere, numeri e trattini. I punti non sono ammessi nel nome della release.
- La linea di comando predefinita installa la versione cluster di Milvus durante l'installazione di Milvus con Helm. Per l'installazione di Milvus standalone sono necessarie ulteriori impostazioni.
- Secondo la guida alla migrazione delle API deprecate di Kubernetes, la versione API policy/v1beta1 di PodDisruptionBudget non viene più utilizzata a partire dalla v1.25. Si suggerisce di migrare i manifesti e i client API per utilizzare invece la versione API policy/v1.
Come soluzione per gli utenti che utilizzano ancora la versione API policy/v1beta1 di PodDisruptionBudget su Kubernetes v1.25 e successivi, è possibile eseguire il seguente comando per installare Milvus:
.helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
- Per ulteriori informazioni, consultare Milvus Helm Chart e Helm.
2. Controllare lo stato del cluster Milvus
Eseguite il seguente comando per verificare lo stato di tutti i pod nel vostro cluster Milvus.
$ kubectl get pods
Una volta che tutti i pod sono in esecuzione, l'output del comando precedente dovrebbe essere simile al seguente:
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-indexnode-5c5f7b5bd9-l8hjg 1/1 Running 0 3m24s
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-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
3. Inoltrare una porta locale a Milvus
Eseguite il seguente comando per ottenere la porta su cui il vostro cluster Milvus serve.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
L'output mostra che l'istanza di Milvus serve sulla porta predefinita 19530.
Se avete distribuito Milvus in modalità standalone, cambiate il nome del pod da my-release-milvus-proxy-xxxxxxxxxx-xxxxx
a my-release-milvus-xxxxxxxxxx-xxxxx
.
Quindi, eseguite il seguente comando per inoltrare una porta locale alla porta su cui Milvus serve.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Facoltativamente, si può usare :19530
invece di 27017:19530
nel comando precedente per lasciare che kubectl
assegni una porta locale al posto nostro, in modo da non dover gestire conflitti di porte.
Per impostazione predefinita, il port-forwarding di kubectl ascolta solo su localhost
. Usate il flag address
se volete che Milvus ascolti su uno o tutti gli indirizzi IP selezionati. Il comando seguente fa sì che il port-forward ascolti tutti gli indirizzi IP della macchina host.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
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
Eseguite il seguente comando per ottenere il manifest di Milvus.
$ helm template my-release milvus/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 pulsar.enabled=false milvus/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 utilizzarehelm template -f values.yaml my-release milvus/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
Disinstallare Milvus
Eseguite il seguente comando per disinstallare Milvus.
$ helm uninstall my-release
Cosa succede dopo
Dopo aver installato Milvus in Docker, è possibile:
Controllare Hello Milvus per vedere cosa può fare Milvus.
Imparare le operazioni di base di Milvus:
Distribuire il cluster Milvus su cloud:
Esplorate Milvus Backup, uno strumento open-source per il backup dei dati di Milvus.
Esplorate Birdwatcher, uno strumento open-source per il debug di Milvus e gli aggiornamenti dinamici della configurazione.
Esplorate Attu, uno strumento open-source per la gestione intuitiva di Milvus.