Eseguire Milvus in Kubernetes con Milvus Operator
Questa pagina illustra come avviare un'istanza di Milvus in Kubernetes utilizzando Milvus Operator.
Panoramica
Milvus Operator è una soluzione che consente di distribuire e gestire uno stack completo di servizi Milvus su cluster Kubernetes (K8s). Lo stack include tutti i componenti di Milvus e le dipendenze correlate, come etcd e MinIO, con Woodpecker come coda di messaggi integrata.
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 falseVerifica i requisiti hardware e software prima dell’installazione.
Prima di installare Milvus, si consiglia di utilizzare lo strumento di dimensionamento Milvus 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 Milvus Operator
Milvus Operator definisce le risorse personalizzate del cluster Milvus basate sulle risorse personalizzate di Kubernetes. Una volta definite le risorse personalizzate, è possibile utilizzare le API di K8s in modo dichiarativo e gestire lo stack di distribuzione di Milvus per garantirne la scalabilità e l’alta disponibilità.
Esegui il seguente comando per installare Milvus Operator con Helm.
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
Al termine del processo di installazione, verrà visualizzato un output simile al seguente.
NAME: milvus-operator
LAST DEPLOYED: Thu Jul 7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD
Se Milvus Operator è già stato installato in precedenza, aggiornarlo utilizzando il comando seguente:
helm upgrade milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
Eseguire il comando seguente per installare Milvus Operator con kubectl.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Al termine del processo di installazione, verrà visualizzato un output simile al seguente.
namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created
È possibile verificare se il pod di Milvus Operator è in esecuzione come segue:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Distribuzione di Milvus
1. Distribuire un cluster Milvus
Una volta che il pod di Milvus Operator è in esecuzione, è possibile distribuire un cluster Milvus come segue.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
Il comando sopra riportato distribuisce un cluster Milvus con Woodpecker come coda di messaggi (consigliato per la versione 3.0.3) e tutti i nuovi componenti architetturali, incluso lo Streaming Node.
Caratteristiche principali dell’architettura in questa distribuzione:
- Coda dei messaggi: utilizza Woodpecker (riduce la manutenzione dell’infrastruttura)
- Nodo di streaming: abilitato per un'elaborazione dei dati potenziata
- Mix Coordinator: componenti di coordinamento consolidati per una maggiore efficienza
Per personalizzare queste impostazioni, si consiglia di utilizzare lo strumento di dimensionamento di Milvus per regolare le configurazioni in base alle dimensioni effettive dei dati e quindi scaricare il file YAML corrispondente. Per ulteriori informazioni sui parametri di configurazione, consultare la Lista di controllo delle configurazioni di sistema di Milvus.
- Il nome della versione deve contenere solo lettere, numeri e trattini. I punti non sono consentiti nel nome della versione.
- È inoltre possibile distribuire un'istanza di Milvus in modalità standalone, in cui tutti i suoi componenti sono contenuti in un unico pod. Per farlo, modificare l’URL del file di configurazione nel comando sopra riportato in
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Verifica dello stato del cluster Milvus
Esegui il seguente comando per verificare lo stato del cluster Milvus
$ kubectl get milvus my-release -o yaml
Una volta che il cluster Milvus è pronto, l’output del comando sopra riportato dovrebbe essere simile al seguente. Se il campo « status.status » rimane « Unhealthy », il cluster Milvus è ancora in fase di creazione.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Milvus Operator crea le dipendenze di Milvus, come etcd e MinIO, e successivamente i componenti di Milvus, quali proxy, coordinatori e nodi.
Una volta che il cluster Milvus è pronto, lo stato di tutti i pod nel cluster Milvus dovrebbe essere simile a quello riportato di seguito.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m36s
my-release-etcd-1 1/1 Running 0 2m36s
my-release-etcd-2 1/1 Running 0 2m36s
my-release-milvus-datanode-58955c65b9-j4j7s 1/1 Running 0 92s
my-release-milvus-mixcoord-686f84968f-jcv5d 1/1 Running 0 92s
my-release-milvus-proxy-646f48fc7c-4lctb 1/1 Running 0 92s
my-release-milvus-querynode-0-d89d7677b-x7j7q 1/1 Running 0 91s
my-release-milvus-streamingnode-556bdcc87c-2qwcc 1/1 Running 0 92s
my-release-minio-0 1/1 Running 0 2m36s
my-release-minio-1 1/1 Running 0 2m36s
my-release-minio-2 1/1 Running 0 2m35s
my-release-minio-3 1/1 Running 0 2m35s
3. Reindirizza una porta locale a Milvus
Esegui il seguente comando per ottenere la porta su cui è in esecuzione il tuo cluster Milvus.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
L'output mostra che l'istanza di Milvus è raggiungibile sulla porta predefinita 19530.
Se hai distribuito Milvus in modalità standalone, modifica il nome del pod da my-release-milvus-proxy-xxxxxxxxxx-xxxxx a my-release-milvus-xxxxxxxxxx-xxxxx.
Quindi, esegui il seguente comando per inoltrare una porta locale alla porta su cui è in esecuzione Milvus.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Facoltativamente, è possibile utilizzare :19530 al posto di 27017:19530 nel comando sopra riportato per consentire a kubectl di allocare automaticamente una porta locale, evitando così di dover gestire eventuali conflitti tra le porte.
Per impostazione predefinita, il reindirizzamento delle porte di kubectl ascolta solo su localhost. Utilizza il flag address se desideri che Milvus ascolti sull'indirizzo IP selezionato o su tutti gli indirizzi IP. Il comando seguente imposta il reindirizzamento delle porte in modo che ascolti su 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
Ora è possibile connettersi a Milvus utilizzando la porta inoltrata.
(Facoltativo) Aggiornamento delle configurazioni di Milvus
È possibile visualizzare e aggiornare le configurazioni del proprio cluster Milvus eseguendo il comando ` patch ` come segue:
Eseguire il comando seguente per visualizzare in anteprima le configurazioni previste.
Quanto segue presuppone che si desideri aggiornare il parametro `
spec.components.disableMetric` a `false` ms.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yamlPer le voci di configurazione applicabili, consultare Configurazione di sistema.
Aggiornare le configurazioni.
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
Accedere all'interfaccia utente web di Milvus
Milvus include uno strumento GUI integrato denominato Milvus WebUI, accessibile tramite browser. Milvus WebUI migliora l’osservabilità del sistema grazie a un’interfaccia semplice e intuitiva. È possibile utilizzare Milvus WebUI 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 effettuare 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 Web UI all’indirizzo http://localhost:27018.
Disinstallazione di Milvus
Eseguire il seguente comando per disinstallare il cluster Milvus.
$ kubectl delete milvus my-release
- Quando si elimina il cluster Milvus utilizzando la configurazione predefinita, le dipendenze come etcd e MinIO non vengono eliminate. Pertanto, la prossima volta che si installerà la stessa istanza del cluster Milvus, queste dipendenze verranno riutilizzate.
- Per eliminare le dipendenze e i persistent volume claim (PVC) insieme al cluster Milvus, consultare il file di configurazione.
Disinstallazione di Milvus Operator
Esistono inoltre due modi per disinstallare Milvus Operator.
Disinstallazione con Helm
$ helm -n milvus-operator uninstall milvus-operator
Disinstallazione con kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
Dipendenze opzionali
Questa distribuzione utilizza Woodpecker come coda di messaggi, etcd per i metadati e MinIO per l'archiviazione degli oggetti, tutti forniti da Milvus Operator. Per utilizzare un backend diverso con l'Operator, consultare:
- Coda di messaggi: Woodpecker (predefinito) · Pulsar · Kafka · RocksMQ
- Archiviazione a oggetti: Configurare l’archiviazione a oggetti con Milvus Operator
- Metadati: Configurare etcd con Milvus Operator
Storage V3 è disabilitato per impostazione predefinita. Abilitalo prima di utilizzare le funzionalità che dipendono da esso. Per i requisiti e le considerazioni sulla compatibilità, consulta Storage V3.
Prossimi passi
Dopo aver installato Milvus in Docker, è possibile:
Consultare Hello Milvus per scoprire cosa può fare Milvus.
Imparare le operazioni di base di Milvus:
Distribuisci il tuo cluster Milvus su cloud:
Scopri Milvus WebUI, un'interfaccia web intuitiva per l'osservabilità e la gestione di Milvus.
Scopri Milvus Backup, uno strumento open source per il backup dei dati di Milvus.
Scopri Birdwatcher, uno strumento open source per il debug di Milvus e gli aggiornamenti dinamici della configurazione.
Scopri Attu, uno strumento GUI open source per una gestione intuitiva di Milvus.