Partilhar via


Atualizar um controlador de dados habilitado para Azure Arc conectado indiretamente usando as ferramentas do Kubernetes

Este artigo explica como atualizar um controlador de dados habilitado para Azure Arc conectado indiretamente com as ferramentas do Kubernetes.

Durante uma atualização do controlador de dados, partes do plano de controle de dados, como CRDs (Custom Resource Definitions) e contêineres, podem ser atualizadas. Uma atualização do controlador de dados não causará tempo de inatividade para os serviços de dados (Instância Gerenciada SQL ou servidor PostgreSQL).

Neste artigo, você aplicará um arquivo .yaml a:

  1. Crie a conta de serviço para executar a atualização.
  2. Atualize o bootstrapper.
  3. Atualize o controlador de dados.

Nota

Algumas das camadas e modos de serviços de dados estão geralmente disponíveis e alguns estão em pré-visualização. Se você instalar o GA e os serviços de visualização no mesmo controlador de dados, não poderá atualizar no local. Para atualizar, exclua todas as instâncias de banco de dados que não sejam do GA. Você pode encontrar a lista de serviços geralmente disponíveis e de visualização nas Notas de versão.

Pré-requisitos

Antes de iniciar a atualização do controlador de dados, você precisará:

  • Para conectar-se e autenticar em um cluster Kubernetes
  • Um contexto Kubernetes existente selecionado

Você precisa de um controlador de dados conectado indiretamente com o imageTag: v1.0.0_2021-07-30 ou superior.

Instalar ferramentas

Para atualizar o controlador de dados usando as ferramentas do Kubernetes, você precisa ter as ferramentas do Kubernetes instaladas.

Os exemplos neste artigo usam kubectl, mas abordagens semelhantes podem ser usadas com outras ferramentas do Kubernetes, como o painel do Kubernetes, ocou helm, se você estiver familiarizado com essas ferramentas e o Kubernetes yaml/json.

Instale a ferramenta kubectl

Veja as imagens disponíveis e escolha uma versão

Puxe a lista de imagens disponíveis para o controlador de dados com o seguinte comando:

az arcdata dc list-upgrades --k8s-namespace <namespace>

O comando acima retorna a saída como o exemplo a seguir:

Found 2 valid versions.  The current datacontroller version is <current-version>.
<available-version>
...

Atualizar controlador de dados

Esta seção mostra como atualizar um controlador de dados conectado indiretamente.

Nota

Algumas das camadas e modos de serviços de dados estão geralmente disponíveis e alguns estão em pré-visualização. Se você instalar o GA e os serviços de visualização no mesmo controlador de dados, não poderá atualizar no local. Para atualizar, exclua todas as instâncias de banco de dados que não sejam do GA. Você pode encontrar a lista de serviços geralmente disponíveis e de visualização nas Notas de versão.

Para obter caminhos de atualização com suporte, consulte Atualizar serviços de dados habilitados para ArcGIS do Azure.

Atualização

Você precisará se conectar e autenticar em um cluster Kubernetes e ter um contexto Kubernetes existente selecionado antes de iniciar a atualização do controlador de dados.

Criar a conta de serviço para executar a atualização

Importante

Requer permissões do Kubernetes para criar conta de serviço, associação de função, função de cluster, associação de função de cluster e todas as permissões RBAC concedidas à conta de serviço.

Salve uma cópia de arcdata-deployer.yaml e substitua o espaço reservado {{NAMESPACE}} no arquivo pelo namespace do controlador de dados, por exemplo: arc. Execute o seguinte comando para criar a conta de serviço do deployer com o arquivo editado.

kubectl apply --namespace arc -f arcdata-deployer.yaml

Atualizar o bootstrapper

O comando a seguir cria um trabalho para atualizar o bootstrapper e os objetos Kubernetes relacionados.

Importante

O arquivo yaml no comando a seguir assume como padrão mcr.microsoft.com/arcdata. Por favor, salve uma cópia do arquivo yaml e atualize-o para um uso de um registro / repositório diferente, se necessário.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml

Atualizar o controlador de dados

O comando a seguir corrige a tag de imagem para atualizar o controlador de dados.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml

Monitorar o status da atualização

Você pode monitorar o progresso da atualização com kubectl.

kubectl

kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w

A atualização é um processo de duas partes. Primeiro, o controlador é atualizado e, em seguida, a pilha de monitoramento é atualizada. Durante a atualização, use kubectl get monitors -n <namespace> -w para exibir o status. O resultado será:

NAME           STATUS     AGE
monitorstack   Updating   36m
monitorstack   Updating   36m
monitorstack   Updating   39m
monitorstack   Updating   39m
monitorstack   Updating   41m
monitorstack   Ready      41m

Resolução de Problemas

Quando a versão desejada é definida para uma versão específica, o trabalho de bootstrapper tentará atualizar para essa versão até que seja bem-sucedido. Se a atualização for bem-sucedida, a RunningVersion propriedade da especificação será atualizada para a nova versão. As atualizações podem falhar em cenários como uma marca de imagem incorreta, incapacidade de se conectar ao registro ou repositório, CPU ou memória insuficientes alocadas para os contêineres ou armazenamento insuficiente.

  1. Execute o comando abaixo para ver se algum dos pods mostra um Error status ou tem um alto número de reinicializações:

    kubectl get pods --namespace <namespace>
    
  2. Para examinar Eventos para ver se há um erro, execute

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. Para obter uma lista dos contêineres nos pods, execute

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. Para obter os logs de um contêiner, execute

    kubectl logs <pod name> <container name> --namespace <namespace>
    

Para exibir erros comuns e como solucioná-los, vá para Recursos de solução de problemas.