Aggiornamento di Pulsar
Questo articolo descrive la procedura per aggiornare il componente Pulsar da V2 a V3 se si dispone già di una distribuzione Milvus funzionante con Pulsar V2.
Da Milvus v2.5, milvus-helm e milvus-operator useranno Pulsar V3 per impostazione predefinita per correggere alcuni bug e vulnerabilità di sicurezza. Mentre Milvus 2.5 è compatibile con Pulsar 2.x, l'aggiornamento a Pulsar V3 è facoltativo. Per migliorare la stabilità e le prestazioni, si consiglia l'aggiornamento a Pulsar V3.
Se si preferisce utilizzare Pulsar V2 con Milvus v2.5.x, leggere Utilizzare Pulsar V2 con Milvus v2.5.x.
Il processo di aggiornamento richiede una breve interruzione del servizio (di solito dura da pochi minuti a più di dieci minuti, a seconda della quantità di dati).
Prima dell'operazione, è necessario interrompere la scrittura dei dati su Milvus da parte di tutti i client in esecuzione. In caso contrario, i dati scritti potrebbero andare persi.
Questo articolo presuppone che Milvus sia installato nello spazio dei nomi
defaulte si chiamimy-release. Si prega di modificare i parametri con il proprio spazio dei nomi e il nome della release durante l'esecuzione dei comandi copiati da questa pagina.Assicuratevi che il vostro ambiente di lavoro abbia i permessi sotto il suddetto spazio dei nomi nel cluster Kubernetes e che i seguenti comandi siano installati.
a.
kubectl>= 1.20b.
helm>= 3.14.0c.
cat,grep,awkper le operazioni di manipolazione delle stringhed.
curlo Attu v2.4+ per interagire con le API di gestione milvus.
Tabella di marcia
Il processo di aggiornamento prevede le seguenti fasi:
Procedure
Questa sezione fornisce le procedure dettagliate per l'aggiornamento di Pulsar da V2 a V3 in Milvus.
Persistere i dati non consumati in Pulsar
In questa fase è necessario assicurarsi che i dati esistenti in Pulsar siano stati persistiti nel servizio di archiviazione degli oggetti. Sono disponibili due approcci e si può scegliere quello più adatto alle proprie esigenze.
Approccio 1: utilizzo di Attu
Se nella vostra implementazione Milvus funzionante avete solo un piccolo numero di collezioni con pochi segmenti, potete usare Attu per persistere i dati nel servizio di archiviazione degli oggetti.
Selezionate ogni raccolta in tutti i database, accedete al pannello
Segmentse fate clic sul pulsanteFlush.
Pannello dei segmenti di una raccolta Quindi, quando appare il popup, fare di nuovo clic su
Flush.
Richiesta di lavaggio dei dati in Attu Attendere quindi che gli stati di segmento persistenti di tutte le raccolte siano
Flushed.
Visualizzazione dello stato di lavaggio dei dati in Attu
Approccio 2: Utilizzo dell'API di gestione
Proxy della porta 9091 del proxy Milvus all'host locale per le operazioni successive.
kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &Uscita.
[1] 8116 Forwarding from 127.0.0.1:9091 -> 9091Salvare il Pid per una successiva pulizia.
pid=8116Attivare l'azione di persistenza di tutti i dati inseriti da Pulsar a Ojbect Storage.
curl 127.0.0.1:9091/api/v1/collections \ |curl 127.0.0.1:9091/api/v1/persist -d @/dev/stdin\ |jq '.flush_coll_segIDs'| jq '[.[] | .data[]]' | jq '{segmentIDs: (.)}' \ > flushing_segments.json cat flushing_segments.jsonUscita.
{ "segmentIDs": [ 454097953998181000, 454097953999383600, 454097953998180800 ] }Controllare Tutti i segmenti trasferiti.
cat flushing_segments.json| curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdinAl termine, si dovrebbe vedere il seguente output
{"status":{},"flushed":true}Interrompere il processo di backendground
kubectl port-forwardkill $pidOutput.
[1] + 8116 terminated kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091
Arresto di Milvus e cancellazione di Pulsar V2
In questo passaggio, è necessario arrestare il pod Milvus ed eliminare il deployment di Pulsar V2. Sono disponibili due sezioni separate:
Per gli utenti di Milvus Helm
Se avete installato Milvus usando il diagramma Milvus Helm, andate a Cancellare Pulsar v2 usando Helm.
Per gli utenti di Milvus Operator
Se avete installato Milvus utilizzando Milvus Operator, andate a Cancellare Pulsar v2 utilizzando Milvus Operator.
Eliminare Pulsar V2 con Helm
Se avete installato Milvus usando il diagramma Milvus Helm, seguite i passaggi seguenti per arrestare il pod Milvus ed eliminare la distribuzione di Pulsar V2.
Salvare i valori attuali della release di Milvus su
values.yamlper recuperarli in seguito.helm -n default get values my-release -o yaml > values.yaml cat values.yamlUtilizzare il comando per arrestare Milvus e tutte le dipendenze. Non preoccupatevi dei volumi di dati, saranno mantenuti per impostazione predefinita.
helm -n default uninstall my-releaseUscita
These resources were kept due to the resource policy: [PersistentVolumeClaim] my-release-minio release "my-release" uninstalledL'elenco dei PVC e dei PV di pulsar (Persistent Volume Claims e Persistent Volume) deve essere cancellato.
kubectl -n default get pvc -lapp=pulsar,release=my-release |grep -v NAME |awk '{print $1}' > pulsar-pvcs.txt kubectl -n default get pvc -lapp=pulsar,release=my-release -o custom-columns=VOL:.spec.volumeName|grep -v VOL > pulsar-pvs.txt echo "Volume Claims:" cat pulsar-pvcs.txt echo "Volumes:" cat pulsar-pvs.txtUscita
Volume Claims: my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0 my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1 my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0 my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1 my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0 Volumes: pvc-f590a4de-df31-4ca8-a424-007eac3c619a pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3 pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf pvc-2da33f64-c053-42b9-bb72-c5d50779aa0aControllare se l'elenco dei PVC di
pulsar-pvcs.txtè tutto per Pulsar. Una volta confermato che non ci sono errori, eliminare i PVC.cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseUscita.
persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0" deleted persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1" deleted persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0" deleted persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1" deleted persistentvolumeclaim "my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0" deleted(Opzionale) A seconda della classe di archiviazione che fornisce il PVC, potrebbe essere necessario rimuovere manualmente il PV.
cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseNon c'è problema se produce l'errore NotFound. È già stato eliminato dai controller di kubernetes.
Error from server (NotFound): persistentvolumeclaims "pvc-f590a4de-df31-4ca8-a424-007eac3c619a" not found Error from server (NotFound): persistentvolumeclaims "pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3" not found Error from server (NotFound): persistentvolumeclaims "pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b" not found Error from server (NotFound): persistentvolumeclaims "pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf" not found Error from server (NotFound): persistentvolumeclaims "pvc-2da33f64-c053-42b9-bb72-c5d50779aa0a" not found
Eliminare Pulsar V2 usando Milvus Operator
Se avete installato Milvus usando Milvus Operator, seguite i passi seguenti per fermare il pod Milvus ed eliminare il deployment di Pulsar V2.
Salvare il manifesto Milvus corrente in
milvus.yamlper un uso successivo.kubectl -n default get milvus my-release -o yaml > milvus.yaml head milvus.yaml -n 20Output.
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: annotations: milvus.io/dependency-values-merged: "true" milvus.io/pod-service-label-added: "true" milvus.io/querynode-current-group-id: "0" creationTimestamp: "2024-11-22T08:06:59Z" finalizers: - milvus.milvus.io/finalizer generation: 3 labels: app: milvus milvus.io/operator-version: 1.1.2 name: my-release namespace: default resourceVersion: "692217324" uid: 7a469ed0-9df1-494e-bd9a-340fac4305b5 spec: components:Creare un file
patch.yamlcon il seguente contenuto.# a patch to retain etcd & storage data and delete pulsar data while delete milvus spec: dependencies: etcd: inCluster: deletionPolicy: Retain pvcDeletion: false storage: inCluster: deletionPolicy: Retain pvcDeletion: false pulsar: inCluster: deletionPolicy: Delete pvcDeletion: trueUsare
kubectl patchper conservare i dati di etcd e storage e cancellare i dati di pulsar mentre si cancella milvus.kubectl -n default patch milvus my-release --patch-file patch.yaml --type=mergeOutput.
milvus.milvus.io/my-release patchedFermare Milvus e cancellare pulsar V2. Non preoccupatevi dei volumi di dati di etcd e object storage, saranno mantenuti per impostazione predefinita.
kubectl -n default delete milvus my-release --wait=false kubectl -n default get milvus my-release kubectl -n default delete milvus my-release --wait=trueUscita: Si noti che potrebbero essere necessari alcuni minuti perché milvus si arresti con grazia e perché l'operatore cancelli i volumi di pulsar.
milvus.milvus.io "my-release" deleted NAME MODE STATUS UPDATED AGE my-release cluster Deleting True 41m milvus.milvus.io "my-release" deletedAttendere il termine del comando.
Verificare nuovamente che la risorsa Milvus sia stata eliminata.
kubectl -n default get milvus my-releaseL'output dovrebbe essere simile a.
No resources found in default namespace.
Avviare Pulsar V3 e Milvus
In questo passaggio è necessario avviare i pod Pulsar V3 e Milvus. Sono disponibili due sezioni separate:
Per l'utente Helm
Se avete installato Milvus utilizzando la tabella Milvus Helm, andate a Per l'utente Helm.
Per gli utenti Milvus Operator
Se avete installato Milvus utilizzando Milvus Operator, andate a Per l'utente di Milvus Operator.
Avviare Pulsar V3 e utilizzare Helm
Modificare il sito
values.yamlsalvato nel passo precedente.# change the following: pulsar: enabled: false # set to false # you may also clean up rest fields under pulsar field # it's ok to keep them though. pulsarv3: enabled: true # append other values for pulsar v3 chart if needsAggiornare il repo locale di helm
helm repo add zilliztech https://zilliztech.github.io/milvus-helm helm repo update zilliztechUscita
"zilliztech" already exists with the same configuration, skipping Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "zilliztech" chart repository Update Complete. ⎈Happy Helming!⎈Installare la release di Milvus con la versione più recente del grafico di Helm utilizzando il file
values.yamlmodificato.helm -n default install my-release zilliztech/milvus --reset-values -f values.yamlUscita
NAME: my-release LAST DEPLOYED: Fri Nov 22 15:31:27 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneControllare i pod per vedere se tutti sono stati pianificati e avviati con
kubectl -n default get pods.Potrebbero essere necessari alcuni minuti perché tutti i pod vengano avviati.
L'output è simile a.
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 4m3s my-release-milvus-datanode-56487bc4bc-s6mbd 1/1 Running 0 4m5s my-release-milvus-indexnode-6476894d6-rv85d 1/1 Running 0 4m5s my-release-milvus-mixcoord-6d8875cb9c-67fcq 1/1 Running 0 4m4s my-release-milvus-proxy-7bc45d57c5-2qf8m 1/1 Running 0 4m4s my-release-milvus-querynode-77465747b-kt7f4 1/1 Running 0 4m4s my-release-minio-684ff4f5df-pnc97 1/1 Running 0 4m5s my-release-pulsarv3-bookie-0 1/1 Running 0 4m3s my-release-pulsarv3-bookie-1 1/1 Running 0 4m3s my-release-pulsarv3-bookie-2 1/1 Running 0 4m3s my-release-pulsarv3-bookie-init-6z4tk 0/1 Completed 0 4m1s my-release-pulsarv3-broker-0 1/1 Running 0 4m2s my-release-pulsarv3-broker-1 1/1 Running 0 4m2s my-release-pulsarv3-proxy-0 1/1 Running 0 4m2s my-release-pulsarv3-proxy-1 1/1 Running 0 4m2s my-release-pulsarv3-pulsar-init-wvqpc 0/1 Completed 0 4m1s my-release-pulsarv3-recovery-0 1/1 Running 0 4m3s my-release-pulsarv3-zookeeper-0 1/1 Running 0 4m2s my-release-pulsarv3-zookeeper-1 1/1 Running 0 4m2s my-release-pulsarv3-zookeeper-2 1/1 Running 0 4m2s
Avviare Pulsar V3 e utilizzare Milvus Operator
Modificare il file
milvus.yamlsalvato nel passo precedente.# change the followings fields: apiVersion: milvus.io/v1beta1 kind: Milvus metadata: annotations: null # this field should be removed or set to null resourceVersion: null # this field should be removed or set to null uid: null # this field should be removed or set to null spec: dependencies: pulsar: inCluster: chartVersion: pulsar-v3 # delete all previous values for pulsar v2 and set it to null. # you may add additional values here for pulsar v3 if you're sure about it. values: nullAssicurarsi che Milvus Operator sia aggiornato alla versione v1.1.2 o successiva.
helm repo add milvus-operator https://zilliztech.github.io/milvus-operator helm repo update milvus-operator helm -n milvus-operator upgrade milvus-operator milvus-operator/milvus-operatorUtilizzare il comando per avviare milvus con pulsar v3
kubectl create -f milvus.yamlUscita
milvus.milvus.io/my-release createdControllare i pod per vedere se tutti sono stati programmati ed eseguiti con
kubectl -n default get pods.Potrebbero essere necessari alcuni minuti perché tutti i pod vengano avviati.
L'output è simile a.
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 65m my-release-milvus-datanode-57fd59ff58-5mdrk 1/1 Running 0 93s my-release-milvus-indexnode-67867c6b9b-4wsbw 1/1 Running 0 93s my-release-milvus-mixcoord-797849f9bb-sf8z5 1/1 Running 0 93s my-release-milvus-proxy-5d5bf98445-c55m6 1/1 Running 0 93s my-release-milvus-querynode-0-64797f5c9-lw4rh 1/1 Running 0 92s my-release-minio-79476ccb49-zvt2h 1/1 Running 0 65m my-release-pulsar-bookie-0 1/1 Running 0 5m10s my-release-pulsar-bookie-1 1/1 Running 0 5m10s my-release-pulsar-bookie-2 1/1 Running 0 5m10s my-release-pulsar-bookie-init-v8fdj 0/1 Completed 0 5m11s my-release-pulsar-broker-0 1/1 Running 0 5m11s my-release-pulsar-broker-1 1/1 Running 0 5m10s my-release-pulsar-proxy-0 1/1 Running 0 5m11s my-release-pulsar-proxy-1 1/1 Running 0 5m10s my-release-pulsar-pulsar-init-5lhx7 0/1 Completed 0 5m11s my-release-pulsar-recovery-0 1/1 Running 0 5m11s my-release-pulsar-zookeeper-0 1/1 Running 0 5m11s my-release-pulsar-zookeeper-1 1/1 Running 0 5m10s my-release-pulsar-zookeeper-2 1/1 Running 0 5m10s