milvus-logo
LFAI
Home
  • Guía de administración
    • Gestión de dependencias

Actualización de Pulsar

Este artículo describe el procedimiento para actualizar su componente Pulsar de V2 a V3 si ya tiene un despliegue Milvus en funcionamiento con Pulsar V2. Desde Milvus v2.5, milvus-helm y milvus-operator utilizarán Pulsar V3 por defecto para corregir algunos errores y vulnerabilidades de seguridad. Aunque Milvus 2.5 es compatible con Pulsar 2.x, la actualización a Pulsar V3 es opcional. Para mejorar la estabilidad y el rendimiento, recomendamos la actualización a Pulsar V3.

  1. El proceso de actualización requiere una breve interrupción del servicio (suele durar entre unos minutos y más de diez, dependiendo de la cantidad de datos).

  2. Antes de la operación, debe impedir que todos los clientes en ejecución escriban datos en Milvus. De lo contrario, pueden perderse los datos escritos.

  3. Este artículo asume que Milvus está instalado en el espacio de nombres default y con el nombre my-release. Por favor, cambie los parámetros a su propio espacio de nombres y nombre de versión mientras ejecuta los comandos copiados de esta página.

  4. Asegúrese de que su entorno de trabajo tiene permisos bajo el espacio de nombres mencionado en el clúster Kubernetes y que los siguientes comandos están instalados.

    a. kubectl >= 1.20

    b. helm >= 3.14.0

    c. cat, grep, awk para operaciones de manipulación de cadenas

    d. curl o Attu v2.4+ para interactuar con la API de gestión de milvus

Hoja de ruta

El proceso de actualización incluye los siguientes pasos:

  1. Persistir los datos no consumidos en pulsar.

  2. Detener Milvus y borrar pulsar V2.

  3. Inicie pulsar V3 y Milvus.

Procedimientos

Esta sección proporciona los procedimientos detallados para actualizar Pulsar de V2 a V3 en Milvus.

Persistir datos no consumidos en Pulsar

En este paso, debe asegurarse de que los datos existentes en Pulsar se han persistido en el servicio de almacenamiento de objetos. Hay dos enfoques disponibles, y puede elegir el que se adapte a sus necesidades.

Enfoque 1: Uso de Attu

Si sólo tiene un pequeño número de colecciones en su despliegue Milvus de trabajo con no muchos segmentos, puede utilizar Attu para persistir los datos en el servicio de almacenamiento de objetos.

  1. Seleccione todas las colecciones de todas sus bases de datos, acceda al panel Segments y haga clic en el botón Flush.

    Segment panel of a collection Panel de segmentos de una colección

  2. A continuación, en la ventana emergente, haga clic en Flush de nuevo.

    Data flush prompt in Attu Aviso de vaciado de datos en Attu

  3. A continuación, espere hasta que todos los estados de los segmentos persistentes de las colecciones estén en Flushed.

    View data flush status in Attu Visualización del estado de vaciado de datos en Attu

Método 2: Uso de la API de gestión

  1. Puerto proxy 9091 del proxy Milvus al host local para operaciones posteriores.

    kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &
    

    Salida.

    [1] 8116
    Forwarding from 127.0.0.1:9091 -> 9091
    
    
  2. Guardar Pid para limpieza posterior.

    pid=8116
    
    
  3. Activar la acción de persistir todos los datos insertados desde 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.json
    
    

    Salida.

    {
      "segmentIDs": [
        454097953998181000,
        454097953999383600,
        454097953998180800
      ]
    }
    
    
  4. Comprobar Todos los segmentos vaciados.

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

    Cuando termine, debería ver la siguiente salida

    {"status":{},"flushed":true}
    
    
  5. Detener el proceso backendground kubectl port-forward

    kill $pid
    
    

    Salida.

    [1]  + 8116 terminated  kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091                      
    
    

Detener Milvus y borrar Pulsar V2

En este paso, necesita detener el pod Milvus y eliminar el despliegue Pulsar V2. Hay dos secciones separadas disponibles:

  • Para usuarios de Milvus Helm

    Si ha instalado Milvus utilizando la tabla Milvus Helm, vaya a Para usuarios de Helm.

  • Para usuarios de Milvus Operator

    Si ha instalado Milvus utilizando el Milvus Operator, vaya a Para usuarios de Milvus Operator.

Borrar Pulsar V2 usando Helm

Si ha instalado Milvus utilizando el cuadro Milvus Helm, siga los pasos que se indican a continuación para detener el pod de Milvus y eliminar el despliegue de Pulsar V2.

  1. Guarde los valores de despliegue actuales de Milvus en values.yaml para recuperarlos posteriormente.

    helm -n default get values my-release -o yaml > values.yaml
    cat values.yaml
    
    
  2. Utilice el comando para detener Milvus y todas las dependencias. No se preocupe por los volúmenes de datos, se mantendrán por defecto.

    helm -n default uninstall my-release
    
    

    Salida

    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) necesita ser borrado

    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
    
    

    Salida

    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. Compruebe si la lista de PVCs de pulsar-pvcs.txt es toda para Pulsar. Una vez confirmado que no hay ningún error, borre los PVCs.

    cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=false
    
    

    Salida.

    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. (Opcional) Dependiendo de la clase de almacenamiento que proporcione el PVC, puede que también necesite eliminar manualmente el PV.

    cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=false
    
    

    No pasa nada si da error NotFound. Ya ha sido eliminado por los controladores 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
    
    

Eliminar Pulsar V2 usando Milvus Operator

Si ha instalado Milvus utilizando Milvus Operator, siga los pasos siguientes para detener el pod Milvus y eliminar el despliegue Pulsar V2.

  1. Guarde el manifiesto Milvus actual en milvus.yaml para su uso posterior.

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

    Salida.

    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. Cree un archivo patch.yaml con el siguiente contenido.

    # 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. Utilice kubectl patch para conservar los datos de etcd y almacenamiento y eliminar los datos de pulsar mientras se elimina milvus.

    kubectl -n default patch milvus my-release --patch-file patch.yaml --type=merge
    
    

    Salida.

    milvus.milvus.io/my-release patched
    
    
  4. Detenga Milvus y borre pulsar V2. No se preocupe por los volúmenes de datos etcd & object storage, se mantendrán por defecto.

    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
    
    

    Salida: Tenga en cuenta que milvus puede tardar unos minutos en detenerse y el operador puede borrar los volúmenes 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
    
    

    Espere hasta que el comando termine.

  5. Compruebe de nuevo que el recurso Milvus ha desaparecido.

    kubectl -n default get milvus my-release
    
    

    La salida debe ser como.

    No resources found in default namespace.
    
    

Iniciar Pulsar V3 y Milvus

En este paso, necesita iniciar los pods Pulsar V3 y Milvus. Hay dos secciones separadas disponibles:

  • Para usuarios de Helm

    Si ha instalado Milvus utilizando la tabla de Milvus Helm, vaya a Para usuario de Helm.

  • Para usuarios de Milvus Operator

    Si ha instalado Milvus utilizando el Milvus Operator, vaya a Para usuarios de Milvus Operator.

Inicie Pulsar V3 y utilice Helm

  1. Edite el values.yaml guardado en el paso anterior.

    # 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. Actualice su helm repo local

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

    Edite

    "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. Instale su versión de milvus con la versión más reciente de helm chart usando el values.yaml editado

    helm -n default install my-release zilliztech/milvus --reset-values -f values.yaml
    
    

    Salida

    NAME: my-release
    LAST DEPLOYED: Fri Nov 22 15:31:27 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
    
  4. Compruebe los pods para ver si todos ellos están programados y funcionando con kubectl -n default get pods.

    Pueden pasar unos minutos hasta que se inicien todos los pods.

    La salida es como.

    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
    
    

Arrancar Pulsar V3 y utilizar Milvus Operator

  1. Edite el milvus.yaml guardado en el paso anterior.

    # 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. Asegúrese de que su Milvus Operator está actualizado a la versión v1.1.2 o posterior.

    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
    
    

    Utilice el comando para iniciar milvus con pulsar v3

    kubectl create -f milvus.yaml
    
    

    Salida

    milvus.milvus.io/my-release created
    
    
  3. Compruebe si todos los pods están programados y en ejecución con kubectl -n default get pods.

    Pueden pasar unos minutos hasta que se inicien todos los pods.

    La salida es como.

    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
    
    

Traducido porDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

¿Fue útil esta página?