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.
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).
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.
Este artículo asume que Milvus está instalado en el espacio de nombres
default
y con el nombremy-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.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.20b.
helm
>= 3.14.0c.
cat
,grep
,awk
para operaciones de manipulación de cadenasd.
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:
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.
Seleccione todas las colecciones de todas sus bases de datos, acceda al panel
Segments
y haga clic en el botónFlush
.Panel de segmentos de una colección
A continuación, en la ventana emergente, haga clic en
Flush
de nuevo.Aviso de vaciado de datos en Attu
A continuación, espere hasta que todos los estados de los segmentos persistentes de las colecciones estén en
Flushed
.Visualización del estado de vaciado de datos en Attu
Método 2: Uso de la API de gestión
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
Guardar Pid para limpieza posterior.
pid=8116
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 ] }
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}
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.
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
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
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
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
(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.
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:
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
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
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.
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
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
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!⎈
Instale su versión de milvus con la versión más reciente de helm chart usando el
values.yaml
editadohelm -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
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
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
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
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