Partilhar via


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

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

Durante uma atualização do controlador de dados, partes do painel de controle de dados, como CRDs (definições de recurso personalizado) e contêineres, podem ser atualizados. Uma atualização do controlador de dados não causará tempo de inatividade dos serviços de dados (Instância Gerenciada de SQL ou servidor PostgreSQL).

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

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

Observação

Algumas das camadas e modos de serviços de dados estão disponíveis para o público geral e outras estão em versão prévia. Se você instalar GA e visualizar serviços no mesmo controlador de dados, não poderá atualizar no local. Para atualizar, exclua todas as instâncias de banco de dados não 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á:

  • Conectar e autenticar a um cluster do Kubernetes
  • Um contexto do 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 de Kubernetes você precisa ter as ferramentas de Kubernetes instaladas.

Os exemplos neste artigo usarão kubectl, mas abordagens semelhantes podem ser usadas com outras ferramentas de Kubernetes como, por exemplo, o painel do Kubernetes, oc ou helm se você estiver familiarizado com essas ferramentas e yaml/json de Kubernetes.

Instalar ferramenta kubectl

Exibir imagens disponíveis e escolher 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 uma saída como o exemplo a seguir:

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

Atualizar o controlador de dados

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

Observação

Algumas das camadas e modos de serviços de dados estão disponíveis para o público geral e outras estão em versão prévia. Se você instalar GA e visualizar serviços no mesmo controlador de dados, não poderá atualizar no local. Para atualizar, exclua todas as instâncias de banco de dados não 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 os serviços de dados habilitados para Azure Arc.

Atualizar

Você precisará se conectar e autenticar a um cluster do Kubernetes e ter um contexto do 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 uma 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 que estão sendo 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 comando a seguir para criar a conta de serviço do implantador 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 é padrão para mcr.microsoft.com/arcdata. Salve uma cópia do arquivo yaml e atualize-o para usar 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 aplica patch à marca 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 upgrade

Você pode monitorar o progresso da atualização com o 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. A saída será:

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

Solução de problemas

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

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

    kubectl get pods --namespace <namespace>
    
  2. Para examinar eventos em busca de 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 ver erros comuns e saber como solucioná-los, acesse Solução de problemas de recursos.