Atualizar o Cluster Milvus com o Milvus Operator
Este guia descreve como atualizar o seu cluster Milvus com o Milvus Operator.
Atualize seu operador Milvus
Execute o seguinte comando para atualizar a versão do seu Milvus Operator 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 2.2.3 ou de versões posteriores para a versão 2.4.17, pode efetuar uma atualização contínua.
- Para atualizar o Milvus de uma versão secundária anterior à v2.2.3 para a 2.4.17, é aconselhável atualizar o Milvus alterando a sua versão de imagem.
- Para atualizar o Milvus da v2.1.x para a 2.4.17, é necessário migrar os metadados antes da atualização efectiva.
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 do coordenador. 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.4.17
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 a atualização contínua dos 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
para 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.4.17
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-old-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
spec:
# Omit other fields ...
components:
image: milvusdb/milvus:v2.4.17
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 pressupõem uma atualização do Milvus 2.1.4 para o Milvus 2.4.17.
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.4.17
. Isto significa que o seu cluster Milvus será atualizado da v2.1.4 para a v2.4.17.
apiVersion: milvus.io/v1beta1
kind: MilvusUpgrade
metadata:
name: my-release-upgrade
spec:
milvus:
namespace: default
name: my-release
sourceVersion: "v2.1.4"
targetVersion: "v2.4.17"
# below are some omit default values:
# targetImage: "milvusdb/milvus:v2.4.17"
# 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 criar a nova configuração.
$ kubectl create -f https://github.com/zilliztech/milvus-operator/blob/main/config/samples/beta/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.