Excluir um servidor PostgreSQL habilitado para Azure Arc

Este documento descreve as etapas para excluir um servidor da sua configuração do Azure Arc.

Observação

Como uma versão prévia do recurso, a tecnologia apresentada neste artigo está sujeita aos Termos de uso complementares para versões prévias do Microsoft Azure.

As atualizações mais recentes estão disponíveis nas notas sobre a versão.

Excluir o servidor

Como exemplo, vamos considerar que desejamos excluir a instância postgres01 da configuração abaixo:

az postgres server-arc list --k8s-namespace <namespace> --use-k8s
Name        State  
----------  -------
postgres01  Ready  

O formato geral do comando para excluir é:

az postgres server-arc delete -n <server name> --k8s-namespace <namespace> --use-k8s

Ao executar esse comando, será solicitada a confirmação da exclusão do servidor. Se você estiver usando scripts para automatizar exclusões, precisará usar o parâmetro Force para ignorar a solicitação de confirmação. Por exemplo, você executaria um comando como:

az postgres server-arc delete -n <server name> --force --k8s-namespace <namespace> --use-k8s

Para obter mais detalhes sobre o comando de exclusão, execute:

az postgres server-arc delete --help 

Excluir o servidor usado neste exemplo

az postgres server-arc delete -n postgres01 --k8s-namespace <namespace> --use-k8s

Recuperar as PVCs (declarações de volumes persistentes) do Kubernetes

Uma PVC (PersistentVolumeClaim) é uma solicitação de armazenamento por um usuário do cluster do Kubernetes durante a criação e a adição de armazenamento a um servidor PostgreSQL. A exclusão de um grupo de servidores não remove os PVCs associados. Isso ocorre por design. A intenção é ajudar o usuário a acessar os arquivos do banco de dados, se a exclusão da instância foi acidental. A exclusão de PVCs não é obrigatória. No entanto, é recomendada. Se você não recuperar essas PVCs, acabará enfrentando erros, pois o seu cluster do Kubernetes vai associar que está ficando sem espaço em disco ou usando o mesmo nome do servidor PostgreSQL, enquanto criar um novo poderá causar inconsistências. Para recuperar os PVCs, siga estas etapas:

1. Liste as PVCs do grupo de servidores que você excluiu

Para listar os PVCs, execute este comando:

kubectl get pvc [-n <namespace name>]

Ele retorna a lista de PVCs, especificamente os PVCs para o grupo de servidores que você excluiu. Por exemplo:

kubectl get pvc
NAME                                         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-few7hh0k4npx9phsiobdc3hq-postgres01-0   Bound    pvc-72ccc225-dad0-4dee-8eae-ed352be847aa   5Gi        RWO            default        2d18h
data-few7hh0k4npx9phsiobdc3hq-postgres01-1   Bound    pvc-ce6f0c51-faed-45ae-9472-8cdf390deb0d   5Gi        RWO            default        2d18h
data-few7hh0k4npx9phsiobdc3hq-postgres01-2   Bound    pvc-5a863ab9-522a-45f3-889b-8084c48c32f8   5Gi        RWO            default        2d18h
data-few7hh0k4npx9phsiobdc3hq-postgres01-3   Bound    pvc-00e1ace3-1452-434f-8445-767ec39c23f2   5Gi        RWO            default        2d15h
logs-few7hh0k4npx9phsiobdc3hq-postgres01-0   Bound    pvc-8b810f4c-d72a-474a-a5d7-64ec26fa32de   5Gi        RWO            default        2d18h
logs-few7hh0k4npx9phsiobdc3hq-postgres01-1   Bound    pvc-51d1e91b-08a9-4b6b-858d-38e8e06e60f9   5Gi        RWO            default        2d18h
logs-few7hh0k4npx9phsiobdc3hq-postgres01-2   Bound    pvc-8e5ad55e-300d-4353-92d8-2e383b3fe96e   5Gi        RWO            default        2d18h
logs-few7hh0k4npx9phsiobdc3hq-postgres01-3   Bound    pvc-f9e4cb98-c943-45b0-aa07-dd5cff7ea585   5Gi        RWO            default        2d15h

Há 8 PVCs para este grupo de servidores.

2. Exclua todas as PVCs

Exclua os dados e registre em log as PVCs do servidor PostgreSQL excluído.

O formato geral desse comando é:

kubectl delete pvc <name of pvc>  [-n <namespace name>]

Por exemplo:

kubectl delete pvc data-few7hh0k4npx9phsiobdc3hq-postgres01-0
kubectl delete pvc data-few7hh0k4npx9phsiobdc3hq-postgres01-1
kubectl delete pvc data-few7hh0k4npx9phsiobdc3hq-postgres01-2
kubectl delete pvc data-few7hh0k4npx9phsiobdc3hq-postgres01-3
kubectl delete pvc logs-few7hh0k4npx9phsiobdc3hq-postgres01-0
kubectl delete pvc logs-few7hh0k4npx9phsiobdc3hq-postgres01-1
kubectl delete pvc logs-few7hh0k4npx9phsiobdc3hq-postgres01-2
kubectl delete pvc logs-few7hh0k4npx9phsiobdc3hq-postgres01-3

Todos esses comandos kubectl confirmarão a exclusão bem-sucedida da PVC. Por exemplo:

persistentvolumeclaim "data-postgres01-0" deleted

Observação

Como indicado, não excluir as PVCs pode acabar colocando o cluster do Kubernetes em uma situação em que ele vai gerar erros. Alguns desses erros podem incluir a impossibilidade de criar, ler, atualizar, excluir recursos da API Kubernetes ou a possibilidade de executar comandos como az arcdata dc export, pois os pods do controlador podem ser removidos dos nós do Kubernetes devido a esse problema de armazenamento (comportamento normal do Kubernetes).

Por exemplo, nos logs, você pode ver mensagens semelhantes a:

Annotations:    microsoft.com/ignore-pod-health: true  
Status:         Failed  
Reason:         Evicted  
Message:        The node was low on resource: ephemeral-storage. Container controller was using 16372Ki, which exceeds its request of 0.

Próxima etapa

Criar um servidor PostgreSQL habilitado para Azure Arc