Mise à jour de Pulsar
Cet article décrit la procédure à suivre pour mettre à jour votre composant Pulsar de V2 à V3 si vous avez déjà un déploiement Milvus fonctionnel avec Pulsar V2.
Depuis Milvus v2.5, milvus-helm et milvus-operator utilisent par défaut Pulsar V3 pour corriger certains bogues et vulnérabilités de sécurité. Bien que Milvus 2.5 soit compatible avec Pulsar 2.x, la mise à niveau vers Pulsar V3 est facultative. Pour une stabilité et des performances accrues, nous recommandons la mise à niveau vers Pulsar V3.
Si vous préférez utiliser Pulsar V2 avec Milvus v2.5.x, lisez Utiliser Pulsar V2 avec Milvus v2.5.x.
Le processus de mise à niveau nécessite une brève interruption de service (cela prend généralement de quelques minutes à plus de dix minutes, en fonction de la quantité de données).
Avant l'opération, vous devez empêcher tous les clients en cours d'exécution d'écrire des données dans Milvus. Sinon, les données écrites risquent d'être perdues.
Cet article suppose que Milvus est installé dans l'espace de noms
defaultet nommémy-release. Veuillez modifier les paramètres en fonction de votre propre espace de noms et nom de version lors de l'exécution des commandes copiées à partir de cette page.Assurez-vous que votre environnement de travail dispose d'autorisations sous l'espace de noms susmentionné dans le cluster Kubernetes et que les commandes suivantes sont installées.
a.
kubectl>= 1.20b.
helm>= 3.14.0c.
catgrep,awkpour les opérations de manipulation de chaînes de caractèresd.
curlou Attu v2.4+ pour interagir avec l'API de gestion milvus
Feuille de route
Le processus de mise à niveau comprend les étapes suivantes :
Procédures
Cette section présente les procédures détaillées de mise à niveau de Pulsar de V2 à V3 dans Milvus.
Persistance des données non consommées dans Pulsar
Dans cette étape, vous devez vous assurer que les données existantes dans Pulsar ont été persistées dans le service de stockage d'objets. Deux approches sont disponibles et vous pouvez choisir celle qui convient à vos besoins.
Approche 1 : Utilisation d'Attu
Si vous n'avez qu'un petit nombre de collections dans votre déploiement Milvus fonctionnel avec peu de segments, vous pouvez utiliser Attu pour persister les données vers le service de stockage d'objets.
Sélectionnez chaque collection dans toutes vos bases de données, accédez au panneau
Segmentset cliquez sur le boutonFlush.
Panneau de segment d'une collection Puis, dans la fenêtre contextuelle, cliquez à nouveau sur
Flush.
Invite de vidange des données dans Attu Attendez ensuite que les états de segmentation persistants de toutes les collections soient
Flushed.
Voir l'état de vidange des données dans Attu
Approche 2 : Utilisation de l'API de gestion
Proxy du port 9091 du proxy Milvus vers l'hôte local pour les opérations suivantes.
kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &Résultat.
[1] 8116 Forwarding from 127.0.0.1:9091 -> 9091Sauvegarder le Pid pour un nettoyage ultérieur.
pid=8116Déclencher l'action de persistance de toutes les données insérées de Pulsar vers 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.jsonRésultat.
{ "segmentIDs": [ 454097953998181000, 454097953999383600, 454097953998180800 ] }Check All segments flushed.
cat flushing_segments.json| curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdinLorsque l'action est terminée, vous devriez voir la sortie suivante
{"status":{},"flushed":true}Arrêter le processus backendground
kubectl port-forwardkill $pidSortie.
[1] + 8116 terminated kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091
Arrêter Milvus et supprimer Pulsar V2
Dans cette étape, vous devez arrêter le pod Milvus et supprimer le déploiement de Pulsar V2. Deux sections distinctes sont disponibles :
Pour les utilisateurs de Milvus Helm
Si vous avez installé Milvus à l'aide de la carte Milvus Helm, allez à Supprimer Pulsar v2 à l'aide de Helm.
Pour les utilisateurs de Milvus Operator
Si vous avez installé Milvus à l'aide de Milvus Operator, allez à Supprimer Pulsar v2 à l'aide de Milvus Operator.
Supprimer Pulsar V2 à l'aide de Helm
Si vous avez installé Milvus à l'aide de la carte Milvus Helm, suivez les étapes ci-dessous pour arrêter le pod Milvus et supprimer le déploiement de Pulsar V2.
Enregistrez les valeurs de version actuelles de Milvus à l'adresse
values.yamlen vue d'une récupération ultérieure.helm -n default get values my-release -o yaml > values.yaml cat values.yamlUtilisez la commande pour arrêter Milvus et toutes les dépendances. Ne vous inquiétez pas pour les volumes de données, ils seront conservés par défaut.
helm -n default uninstall my-releaseSortie
These resources were kept due to the resource policy: [PersistentVolumeClaim] my-release-minio release "my-release" uninstalledList pulsar PVCs & PVs (Persistent Volume Claims & Persistent Volume) needs to be cleared (La liste des PVCs et PVs de pulsar doit être effacée)
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.txtSortie
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-c5d50779aa0aVérifiez que la liste des PVC de
pulsar-pvcs.txtest bien celle de Pulsar. Une fois que vous avez confirmé qu'il n'y a pas d'erreur, supprimez les PVC.cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseSortie.
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(Facultatif) En fonction de la classe de stockage qui fournit le PVC, il se peut que vous deviez également supprimer manuellement le PV.
cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=falseCe n'est pas grave s'il produit des erreurs NotFound. Il est déjà supprimé par les contrôleurs 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
Supprimer Pulsar V2 à l'aide de Milvus Operator
Si vous avez installé Milvus à l'aide de Milvus Operator, suivez les étapes ci-dessous pour arrêter le pod Milvus et supprimer le déploiement de Pulsar V2.
Enregistrez le manifeste Milvus actuel sur
milvus.yamlpour une utilisation ultérieure.kubectl -n default get milvus my-release -o yaml > milvus.yaml head milvus.yaml -n 20Résultat.
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:Créer un fichier
patch.yamlavec le contenu suivant.# 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: trueUtiliser
kubectl patchpour conserver les données etcd et de stockage et supprimer les données pulsar lors de la suppression de Milvus.kubectl -n default patch milvus my-release --patch-file patch.yaml --type=mergeRésultat.
milvus.milvus.io/my-release patchedArrêter Milvus et supprimer pulsar V2. Ne vous préoccupez pas des volumes de données etcd et de stockage d'objets, ils seront conservés par défaut.
kubectl -n default delete milvus my-release --wait=false kubectl -n default get milvus my-release kubectl -n default delete milvus my-release --wait=trueRésultat : Notez que cela peut prendre quelques minutes pour que Milvus s'arrête de manière gracieuse et que l'opérateur supprime les volumes de pulsar.
milvus.milvus.io "my-release" deleted NAME MODE STATUS UPDATED AGE my-release cluster Deleting True 41m milvus.milvus.io "my-release" deletedAttendez que la commande soit terminée.
Vérifier à nouveau que la ressource Milvus a disparu.
kubectl -n default get milvus my-releaseLe résultat devrait être le suivant.
No resources found in default namespace.
Démarrer Pulsar V3 et Milvus
Dans cette étape, vous devez démarrer les pods Pulsar V3 et Milvus. Deux sections distinctes sont disponibles :
Pour l'utilisateur Helm
Si vous avez installé Milvus à l'aide de la carte Milvus Helm, passez à For Helm User.
Pour les utilisateurs de Milvus Operator
Si vous avez installé Milvus à l'aide de Milvus Operator, allez à Pour l'utilisateur de Milvus Operator.
Démarrer Pulsar V3 et utiliser Helm
Modifier le site
values.yamlenregistré à l'étape précédente.# 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 needsMettez à jour votre répertoire helm local.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm helm repo update zilliztechSortie
"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!⎈Installez votre version de Milvus avec la dernière version de helm chart en utilisant la version éditée de
values.yaml.helm -n default install my-release zilliztech/milvus --reset-values -f values.yamlSortie
NAME: my-release LAST DEPLOYED: Fri Nov 22 15:31:27 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: NoneVérifiez les pods pour voir s'ils sont tous planifiés et en cours d'exécution avec
kubectl -n default get pods.Cela peut prendre quelques minutes pour que tous les pods démarrent.
Le résultat est le suivant.
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
Démarrer Pulsar V3 et utiliser Milvus Operator
Modifiez le site
milvus.yamlenregistré à l'étape précédente.# 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: nullAssurez-vous que votre Milvus Operator est mis à niveau vers la version v1.1.2 ou une version ultérieure.
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-operatorUtiliser la commande pour démarrer milvus avec pulsar v3
kubectl create -f milvus.yamlSortie
milvus.milvus.io/my-release createdVérifier les pods pour voir si tous sont planifiés et en cours d'exécution avec
kubectl -n default get pods.Cela peut prendre quelques minutes pour que tous les pods démarrent.
Le résultat est le suivant.
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