Actualizar Milvus Cluster con Milvus Operator
Esta guía describe cómo actualizar su cluster Milvus con Milvus operator.
Actualice su operador Milvus
Ejecute el siguiente comando para actualizar la versión de su Operador Milvus a v1.0.1.
helm repo add zilliztech-milvus-operator https://zilliztech.github.io/milvus-operator/
helm repo update zilliztech-milvus-operator
helm -n milvus-operator upgrade milvus-operator zilliztech-milvus-operator/milvus-operator
Una vez que haya actualizado su operador Milvus a la última versión, tiene las siguientes opciones:
- Para actualizar Milvus desde v2.2.3 o versiones posteriores a 2.5.0-beta, puede realizar una actualización continua.
- Para actualizar Milvus desde una versión menor anterior a v2.2.3 a 2.5.0-beta, se recomienda actualizar Milvus cambiando su versión de imagen.
- Para actualizar Milvus de v2.1.x a 2.5.0-beta, debe migrar los metadatos antes de la actualización.
Realizar una actualización continua
Desde Milvus 2.2.3, puede configurar los coordinadores de Milvus para que funcionen en modo activo-espera y habilitar la función de actualización continua para ellos, de forma que Milvus pueda responder a las solicitudes entrantes durante las actualizaciones de los coordinadores. En versiones anteriores, los coordinadores debían eliminarse y luego crearse durante una actualización, lo que podía introducir cierto tiempo de inactividad del servicio.
Basándose en las capacidades de actualización continua proporcionadas por Kubernetes, el operador Milvus aplica una actualización ordenada de los despliegues según sus dependencias. Además, Milvus implementa un mecanismo para garantizar que sus componentes sigan siendo compatibles con aquellos que dependen de ellos durante la actualización, lo que reduce significativamente el posible tiempo de inactividad del servicio.
La función de actualización continua está desactivada por defecto. Es necesario habilitarla explícitamente a través de un archivo de configuración.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: rollingUpgrade # Default value, can be omitted
image: milvusdb/milvus:v2.5.0-beta
En el archivo de configuración anterior, establezca spec.components.enableRollingUpdate
en true
y spec.components.image
en la versión de Milvus deseada.
Por defecto, Milvus realiza la actualización continua para los coordinadores de forma ordenada, en la que sustituye las imágenes del pod de coordinador una tras otra. Para reducir el tiempo de actualización, considere configurar spec.components.imageUpdateMode
a all
para que Milvus reemplace todas las imágenes de pod al mismo tiempo.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: all
image: milvusdb/milvus:v2.5.0-beta
Puede configurar spec.components.imageUpdateMode
a rollingDowngrade
para que Milvus reemplace las imágenes de pod coordinador con una versión inferior.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: rollingDowngrade
image: milvusdb/milvus:<some-old-version>
Luego guarde su configuración como un archivo YAML (por ejemplo, milvusupgrade.yml
) y parchee este archivo de configuración a su instancia Milvus como sigue:
kubectl patch -f milvusupgrade.yml
Actualizar Milvus cambiando su imagen
En casos normales, puede simplemente actualizar su Milvus a la última versión cambiando su imagen. Sin embargo, tenga en cuenta que habrá un cierto tiempo de inactividad al actualizar Milvus de esta manera.
Componga un fichero de configuración como el siguiente y guárdelo como milvusupgrade.yaml:
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
# Omit other fields ...
components:
image: milvusdb/milvus:v2.5.0-beta
A continuación, ejecute lo siguiente para realizar la actualización:
kubectl patch -f milvusupgrade.yaml
Migrar los metadatos
Desde Milvus 2.2.0, los metadatos son incompatibles con los de versiones anteriores. Los siguientes ejemplos suponen una actualización de Milvus 2.1.4 a Milvus 2.5.0-beta.
1. Crear un archivo .yaml
para la migración de metadatos
Cree un archivo de migración de metadatos. El siguiente es un ejemplo. Debe especificar name
, sourceVersion
y targetVersion
en el archivo de configuración. El siguiente ejemplo establece name
en my-release-upgrade
, sourceVersion
en v2.1.4
y targetVersion
en v2.5.0-beta
. Esto significa que su clúster Milvus se actualizará de v2.1.4 a v2.5.0-beta.
apiVersion: milvus.io/v1beta1
kind: MilvusUpgrade
metadata:
name: my-release-upgrade
spec:
milvus:
namespace: default
name: my-release
sourceVersion: "v2.1.4"
targetVersion: "v2.5.0-beta"
# below are some omit default values:
# targetImage: "milvusdb/milvus:v2.5.0-beta"
# toolImage: "milvusdb/meta-migration:v2.2.0"
# operation: upgrade
# rollbackIfFailed: true
# backupPVC: ""
# maxRetry: 3
2. Aplique la nueva configuración
Ejecute el siguiente comando para crear la nueva configuración.
$ kubectl create -f https://github.com/zilliztech/milvus-operator/blob/main/config/samples/beta/milvusupgrade.yaml
3. 3. Compruebe el estado de la migración de metadatos
Ejecute el siguiente comando para comprobar el estado de la migración de metadatos.
kubectl describe milvus release-name
El estado de ready
en la salida significa que la migración de metadatos se ha realizado correctamente.
También puede ejecutar kubectl get pod
para comprobar todos los pods. Si todos los pods son ready
, la migración de metadatos se ha realizado correctamente.
4. Elimine my-release-upgrade
Cuando la actualización se haya realizado correctamente, elimine my-release-upgrade
en el archivo YAML.