milvus-logo
LFAI
Home
  • Guide d'administration
    • Gérer les dépendances

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.

  1. 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).

  2. 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.

  3. Cet article suppose que Milvus est installé dans l'espace de noms default et 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.

  4. 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.20

    b. helm >= 3.14.0

    c. cat, grep, awk pour les opérations de manipulation de chaînes de caractères

    d. curl ou Attu v2.4+ pour interagir avec l'API de gestion milvus

Feuille de route

Le processus de mise à niveau comprend les étapes suivantes :

  1. Persister les données non consommées dans pulsar.

  2. Arrêter Milvus et supprimer pulsar V2.

  3. Démarrer Pulsar V3 et Milvus.

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.

  1. Sélectionnez chaque collection dans toutes vos bases de données, accédez au panneau Segments et cliquez sur le bouton Flush.

    Segment panel of a collection Panneau de segment d'une collection

  2. Puis, dans la fenêtre contextuelle, cliquez à nouveau sur Flush.

    Data flush prompt in Attu Invite de vidange des données dans Attu

  3. Attendez ensuite que les états de segmentation persistants de toutes les collections soient Flushed.

    View data flush status in Attu Voir l'état de vidange des données dans Attu

Approche 2 : Utilisation de l'API de gestion

  1. 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 -> 9091
    
    
  2. Sauvegarder le Pid pour un nettoyage ultérieur.

    pid=8116
    
    
  3. Dé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.json
    
    

    Résultat.

    {
      "segmentIDs": [
        454097953998181000,
        454097953999383600,
        454097953998180800
      ]
    }
    
    
  4. Check All segments flushed.

    cat flushing_segments.json|  curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdin 
    
    

    Lorsque l'action est terminée, vous devriez voir la sortie suivante

    {"status":{},"flushed":true}
    
    
  5. Arrêter le processus backendground kubectl port-forward

    kill $pid
    
    

    Sortie.

    [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 :

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.

  1. Enregistrez les valeurs de version actuelles de Milvus à l'adresse values.yaml en vue d'une récupération ultérieure.

    helm -n default get values my-release -o yaml > values.yaml
    cat values.yaml
    
    
  2. Utilisez 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-release
    
    

    Sortie

    These resources were kept due to the resource policy:
    [PersistentVolumeClaim] my-release-minio
    
    release "my-release" uninstalled
    
    
  3. List 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.txt
    
    

    Sortie

    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-c5d50779aa0a
    
    
  4. Vérifiez que la liste des PVC de pulsar-pvcs.txt est 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=false
    
    

    Sortie.

    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
    
    
  5. (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=false
    
    

    Ce 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.

  1. Enregistrez le manifeste Milvus actuel sur milvus.yaml pour une utilisation ultérieure.

    kubectl -n default get milvus my-release -o yaml > milvus.yaml
    head milvus.yaml -n 20
    
    

    Ré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:
    
    
  2. Créer un fichier patch.yaml avec 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: true
    
    
  3. Utiliser kubectl patch pour 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=merge
    
    

    Résultat.

    milvus.milvus.io/my-release patched
    
    
  4. Arrê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=true
    
    

    Ré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" deleted
    
    

    Attendez que la commande soit terminée.

  5. Vérifier à nouveau que la ressource Milvus a disparu.

    kubectl -n default get milvus my-release
    
    

    Le 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

  1. Modifier le site values.yaml enregistré à 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 needs
    
    
  2. Mettez à jour votre répertoire helm local.

    helm repo add zilliztech https://zilliztech.github.io/milvus-helm
    helm repo update zilliztech
    
    

    Sortie

    "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!⎈
    
    
  3. 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.yaml
    
    

    Sortie

    NAME: my-release
    LAST DEPLOYED: Fri Nov 22 15:31:27 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
    
  4. Vé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

  1. Modifiez le site milvus.yaml enregistré à 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: null
    
    
  2. Assurez-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-operator
    
    

    Utiliser la commande pour démarrer milvus avec pulsar v3

    kubectl create -f milvus.yaml
    
    

    Sortie

    milvus.milvus.io/my-release created
    
    
  3. Vérifiez 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
    
    

Traduit parDeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?