Atualizar o Milvus Standalone com o Milvus Operator
Este guia descreve como atualizar o seu Milvus standalone com o Milvus Operator.
Atualizar o seu Milvus Operator
Execute o seguinte comando para atualizar a versão do seu operador Milvus para 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
Depois de ter atualizado o seu Milvus operator para a versão mais recente, tem as seguintes opções:
- Para atualizar o Milvus da versão v2.2.3 ou versões posteriores para a versão 2.5.0-beta, pode efetuar uma atualização contínua.
- Para atualizar o Milvus de uma versão secundária anterior à v2.2.3 para a 2.5.0-beta, é aconselhável atualizar o Milvus alterando a sua versão de imagem.
- Para atualizar o Milvus da v2.1.x para a 2.5.0-beta, é necessário migrar os metadados antes da atualização propriamente dita.
Realizar uma atualização contínua
Desde a versão 2.2.3 do Milvus, é possível configurar os coordenadores do Milvus para funcionarem em modo de espera ativa e ativar a funcionalidade de atualização contínua para os mesmos, de modo a que o Milvus possa responder aos pedidos recebidos durante as actualizações dos coordenadores. Nas versões anteriores, os coordenadores devem ser removidos e depois criados durante uma atualização, o que pode provocar um certo tempo de inatividade do serviço.
Com base nas capacidades de atualização contínua fornecidas pela Kubernetes, o operador do Milvus impõe uma atualização ordenada das implementações de acordo com as suas dependências. Além disso, o Milvus implementa um mecanismo para garantir que os seus componentes permanecem compatíveis com os que deles dependem durante a atualização, reduzindo significativamente o potencial tempo de inatividade do serviço.
A funcionalidade de atualização contínua está desactivada por defeito. É necessário activá-la explicitamente através de um ficheiro de configuração.
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
Neste ficheiro de configuração acima, defina spec.components.enableRollingUpdate
para true
e defina spec.components.image
para a versão desejada do Milvus.
Por predefinição, o Milvus efectua uma atualização contínua para os coordenadores de forma ordenada, substituindo as imagens do pod do coordenador uma após a outra. Para reduzir o tempo de atualização, considere definir spec.components.imageUpdateMode
como all
para que o Milvus substitua todas as imagens de pod ao mesmo tempo.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: all
image: milvusdb/milvus:v2.5.0-beta
Você pode definir spec.components.imageUpdateMode
como rollingDowngrade
para que o Milvus substitua as imagens do pod coordenador por uma versão inferior.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: rollingDowngrade
image: milvusdb/milvus:<some-older-version>
Em seguida, salve sua configuração como um arquivo YAML (por exemplo, milvusupgrade.yml
) e faça o patch desse arquivo de configuração para sua instância do Milvus da seguinte forma:
kubectl patch -f milvusupgrade.yml
Atualizar o Milvus alterando sua imagem
Em casos normais, pode simplesmente atualizar o seu Milvus para a versão mais recente, alterando a sua imagem. No entanto, tenha em atenção que haverá um certo tempo de inatividade ao atualizar o Milvus desta forma.
Crie um ficheiro de configuração da seguinte forma e guarde-o como milvusupgrade.yaml:
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
labels:
app: milvus
spec:
# Omit other fields ...
components:
image: milvusdb/milvus:v2.5.0-beta
Em seguida, execute o seguinte para realizar a atualização:
kubectl patch -f milvusupgrade.yaml
Migrar os metadados
Desde o Milvus 2.2.0, os metadados são incompatíveis com os das versões anteriores. Os seguintes exemplos assumem uma atualização do Milvus 2.1.4 para o Milvus v2.5.0-beta.
1. Criar um ficheiro .yaml
para migração de metadados
Crie um ficheiro de migração de metadados. Segue-se um exemplo. É necessário especificar name
, sourceVersion
e targetVersion
no ficheiro de configuração. O exemplo seguinte define name
para my-release-upgrade
, sourceVersion
para v2.1.4
, e targetVersion
para v2.5.0-beta
. Isto significa que a sua instância Milvus será actualizada da v2.1.4 para 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. Aplicar a nova configuração
Execute o seguinte comando para aplicar a nova configuração.
$ kubectl create -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvusupgrade.yaml
3. Verificar o estado da migração de metadados
Execute o seguinte comando para verificar o estado da migração de metadados.
kubectl describe milvus release-name
O estado de ready
na saída significa que a migração de metadados foi bem sucedida.
Ou pode também executar kubectl get pod
para verificar todos os pods. Se todos os pods forem ready
, a migração de metadados será bem-sucedida.
4. Eliminar my-release-upgrade
Quando a atualização for bem sucedida, elimine my-release-upgrade
no ficheiro YAML.