Aufrüstung von Pulsar
Dieser Artikel beschreibt, wie Sie Ihre Pulsar-Komponente von V2 auf V3 aktualisieren können, wenn Sie bereits einen funktionierenden Milvus-Einsatz mit Pulsar V2 haben.
Seit Milvus v2.5 verwenden milvus-helm und milvus-operator standardmäßig Pulsar V3, um einige Bugs und Sicherheitslücken zu beheben. Während Milvus 2.5 mit Pulsar 2.x kompatibel ist, ist ein Upgrade auf Pulsar V3 optional. Um die Stabilität und Leistung zu verbessern, empfehlen wir ein Upgrade auf Pulsar V3.
Wenn Sie lieber Pulsar V2 mit Milvus v2.5.x verwenden möchten, lesen Sie bitte Pulsar V2 mit Milvus v2.5.x verwenden.
Der Upgrade-Vorgang erfordert eine kurze Unterbrechung des Dienstes (je nach Datenmenge dauert er zwischen einigen Minuten und mehr als zehn Minuten).
Vor dem Vorgang müssen Sie alle laufenden Clients davon abhalten, Daten in Milvus zu schreiben. Andernfalls können die geschriebenen Daten verloren gehen.
Dieser Artikel geht davon aus, dass Milvus im Namensraum
defaultinstalliert ist und den Namenmy-releaseträgt. Bitte ändern Sie die Parameter auf Ihren eigenen Namespace und Freigabenamen, während Sie die von dieser Seite kopierten Befehle ausführen.Stellen Sie sicher, dass Ihre Arbeitsumgebung unter dem oben genannten Namespace im Kubernetes-Cluster über Berechtigungen verfügt und die folgenden Befehle installiert sind.
a.
kubectl>= 1.20b.
helm>= 3.14.0c.
cat,grep,awkfür Operationen zur Manipulation von Zeichenkettend.
curloder Attu v2.4+ zur Interaktion mit der milvus-Verwaltungs-API
Fahrplan
Der Upgrade-Prozess umfasst die folgenden Schritte:
Prozeduren
Dieser Abschnitt enthält die detaillierten Verfahren für das Upgrade von Pulsar von V2 auf V3 in Milvus.
Persistieren von nicht verbrauchten Daten in Pulsar
In diesem Schritt müssen Sie sicherstellen, dass die in Pulsar vorhandenen Daten in den Objektspeicherdienst persistiert wurden. Es gibt zwei Ansätze, von denen Sie den Ihren Bedürfnissen entsprechenden wählen können.
Ansatz 1: Verwendung von Attu
Wenn Sie nur eine kleine Anzahl von Sammlungen in Ihrer Milvus-Bereitstellung mit nicht vielen Segmenten haben, können Sie Attu verwenden, um die Daten im Objektspeicherdienst zu persistieren.
Wählen Sie jede Sammlung in all Ihren Datenbanken aus, gehen Sie in das Panel
Segmentsund klicken Sie auf die SchaltflächeFlush
Segment-Panel einer Sammlung Klicken Sie dann im Popup-Fenster erneut auf
Flush.
Aufforderung zur Datenflutung in Attu Warten Sie dann, bis die Persistent Segment States aller Sammlungen
Flushedsind.
Anzeigen des Datenflush-Status in Attu
Ansatz 2: Verwendung der Verwaltungs-API
Proxy-Port 9091 des Milvus-Proxys auf dem lokalen Host für nachfolgende Operationen.
kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &Ausgabe.
[1] 8116 Forwarding from 127.0.0.1:9091 -> 9091Pid für spätere Bereinigung speichern.
pid=8116Auslösen der Aktion zum Persistieren aller eingefügten Daten von Pulsar zu 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.jsonAusgabe.
{ "segmentIDs": [ 454097953998181000, 454097953999383600, 454097953998180800 ] }Prüfen Sie Alle Segmente geleert.
cat flushing_segments.json| curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdinWenn der Vorgang abgeschlossen ist, sollten Sie die folgende Ausgabe sehen
{"status":{},"flushed":true}Stoppen Sie den
kubectl port-forwardProzess im Hintergrund.kill $pidAusgabe.
[1] + 8116 terminated kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091
Milvus stoppen und Pulsar V2 löschen
In diesem Schritt müssen Sie den Milvus-Pod stoppen und die Pulsar-V2-Bereitstellung löschen. Es sind zwei separate Abschnitte verfügbar:
Für Milvus Helm-Benutzer
Wenn Sie Milvus mit Hilfe des Milvus Helm-Diagramms installiert haben, gehen Sie zu Pulsar v2 mit Helm löschen.
Für Milvus Operator-Benutzer
Wenn Sie Milvus mit Milvus Operator installiert haben, gehen Sie zu Pulsar v2 mit Milvus Operator löschen.
Pulsar V2 mit dem Helm löschen
Wenn Sie Milvus mit Hilfe des Milvus Helm-Diagramms installiert haben, befolgen Sie die nachstehenden Schritte, um den Milvus-Pod zu stoppen und die Pulsar V2-Bereitstellung zu löschen.
Speichern Sie die aktuellen Milvus-Freigabewerte auf
values.yamlfür eine spätere Wiederherstellung.helm -n default get values my-release -o yaml > values.yaml cat values.yamlVerwenden Sie den Befehl, um Milvus und alle Abhängigkeiten zu stoppen. Machen Sie sich keine Sorgen um die Datenvolumina, sie werden standardmäßig beibehalten.
helm -n default uninstall my-releaseAusgabe
These resources were kept due to the resource policy: [PersistentVolumeClaim] my-release-minio release "my-release" uninstalledListe pulsar PVCs & PVs (Persistent Volume Claims & Persistent Volume) muss gelöscht werden
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.txtAusgabe
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-c5d50779aa0aPrüfen Sie, ob die PVC-Liste von
pulsar-pvcs.txtalle für Pulsar ist. Sobald Sie bestätigt haben, dass kein Fehler vorliegt, löschen Sie die PVCs.cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseAusgabe.
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(Optional) Je nach der Speicherklasse, die das PVC bereitstellt, müssen Sie das PV eventuell auch manuell entfernen.
cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseEs ist in Ordnung, wenn sie NotFound-Fehler ausgibt. Sie ist bereits von den Kubernetes-Controllern gelöscht worden.
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
Pulsar V2 mit Milvus Operator löschen
Wenn Sie Milvus mit dem Milvus Operator installiert haben, befolgen Sie die folgenden Schritte, um den Milvus-Pod zu stoppen und die Pulsar-V2-Bereitstellung zu löschen.
Speichern Sie das aktuelle Milvus-Manifest unter
milvus.yamlzur späteren Verwendung.kubectl -n default get milvus my-release -o yaml > milvus.yaml head milvus.yaml -n 20Ausgabe.
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:Erstellen Sie eine
patch.yamlDatei mit folgendem Inhalt.# 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: trueVerwenden Sie
kubectl patch, um etcd- und Speicherdaten beizubehalten und Pulsar-Daten zu löschen, während Sie Milvus löschen.kubectl -n default patch milvus my-release --patch-file patch.yaml --type=mergeAusgabe.
milvus.milvus.io/my-release patchedStoppen Sie Milvus und löschen Sie pulsar V2. Kümmern Sie sich nicht um die etcd- und Objektspeicherdaten, diese werden standardmäßig beibehalten.
kubectl -n default delete milvus my-release --wait=false kubectl -n default get milvus my-release kubectl -n default delete milvus my-release --wait=trueAusgabe: Beachten Sie, dass es ein paar Minuten dauern kann, bis milvus ordnungsgemäß beendet ist und der Operator die pulsar-Volumes gelöscht hat.
milvus.milvus.io "my-release" deleted NAME MODE STATUS UPDATED AGE my-release cluster Deleting True 41m milvus.milvus.io "my-release" deletedWarten Sie, bis der Befehl beendet ist.
Prüfen Sie erneut, ob die Milvus-Ressource verschwunden ist.
kubectl -n default get milvus my-releaseDie Ausgabe sollte wie folgt aussehen.
No resources found in default namespace.
Pulsar V3 und Milvus starten
In diesem Schritt müssen Sie die Pulsar V3- und Milvus-Pods starten. Es sind zwei separate Abschnitte verfügbar:
Für Helm-Benutzer
Wenn Sie Milvus mit Hilfe des Milvus Helm Diagramms installiert haben, gehen Sie zu Für Helm Benutzer.
Für Milvus Operator Benutzer
Wenn Sie Milvus mit dem Milvus Operator installiert haben, gehen Sie zu Für Milvus Operator Benutzer.
Starten Sie Pulsar V3 und verwenden Sie Helm
Bearbeiten Sie die im vorherigen Schritt gespeicherte
values.yaml.# 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 needsAktualisieren Sie Ihr lokales Helm-Repositorium
helm repo add zilliztech https://zilliztech.github.io/milvus-helm helm repo update zilliztechAusgabe
"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!⎈Installieren Sie Ihre Milvus-Version mit der neuesten Helm-Chart-Version unter Verwendung der editierten
values.yamlhelm -n default install my-release zilliztech/milvus --reset-values -f values.yamlAusgabe
NAME: my-release LAST DEPLOYED: Fri Nov 22 15:31:27 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneÜberprüfen Sie die Pods, um zu sehen, ob alle mit
kubectl -n default get podsgeplant und ausgeführt werden.Es kann ein paar Minuten dauern, bis alle Pods gestartet sind.
Die Ausgabe ist wie folgt.
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
Pulsar V3 starten und Milvus Operator verwenden
Bearbeiten Sie die im vorherigen Schritt gespeicherte
milvus.yaml.# 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: nullStellen Sie sicher, dass Ihr Milvus Operator auf v1.1.2 oder eine neuere Version aktualisiert wurde.
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-operatorVerwenden Sie den Befehl zum Starten von Milvus mit Pulsar V3
kubectl create -f milvus.yamlAusgabe
milvus.milvus.io/my-release createdÜberprüfen Sie die Pods, um zu sehen, ob sie alle mit
kubectl -n default get podsgeplant und ausgeführt werden.Es kann ein paar Minuten dauern, bis alle Pods gestartet sind.
Die Ausgabe ist wie folgt.
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