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:
- Criar a conta de serviço para executar a atualização.
- Atualizar o bootstrapper.
- 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.
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.
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>
Para examinar eventos em busca de um erro, execute
kubectl describe pod <pod name> --namespace <namespace>
Para obter uma lista dos contêineres nos pods, execute
kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
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.