Удаление сервера PostgreSQL с поддержкой Azure Arc

В этом документе описаны шаги по удалению сервера из настройки Azure Arc.

Примечание.

В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.

Последние обновления доступны в заметках о выпуске.

Удаление сервера

Например, рассмотрим ситуацию, когда нам нужно удалить экземпляр postgres01 из следующей конфигурации:

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

Общий формат команды удаления:

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

При выполнении этой команды вам будет предложено подтвердить удаление сервера. При использовании скриптов для автоматизации удаления необходимо использовать параметр --force, чтобы обойти запрос на подтверждение. Например, можно выполнить команду следующим образом:

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

Чтобы получить дополнительные сведения о команде удаления, выполните команду:

az postgres server-arc delete --help 

Удаление сервера, используемого в этом примере

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

Освобождение утверждений постоянного тома Kubernetes (PVC)

PersistentVolumeClaim (PVC) — это запрос на хранение пользователем из кластера Kubernetes при создании и добавлении хранилища на сервер PostgreSQL. Удаление группы серверов не приводит к удалению связанных с ней утверждений PVC. Это сделано намеренно. Это необходимо, чтобы помочь пользователю получить доступ к файлам базы данных в случае случайного удаления экземпляра. Удалять утверждения PVC не обязательно, но рекомендуется. Если вы не освобождаете эти ПВК, в конечном итоге в конечном итоге будет возникать ошибка, так как кластер Kubernetes будет думать, что это истекает дисковое пространство или использование того же имени сервера PostgreSQL при создании нового может привести к несоответствиям. Для освобождения утверждений PVC сделайте следующее.

1. Получите список PVC для группы серверов, которую вы удалили

Чтобы получить список PVC, выполните следующую команду:

kubectl get pvc [-n <namespace name>]

Она возвращает список PVC, в частности, PVC для удаленной группы серверов. Например:

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

Для этой группы серверов имеется 8 PVC.

2. Удалите все PVC.

Удалите данные и журнал PVCs для удаленного сервера PostgreSQL.

Необходимая команда имеет следующий формат:

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

Например:

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

Каждая из этих команд kubectl будет подтверждать успешное удаление PVC. Например:

persistentvolumeclaim "data-postgres01-0" deleted

Примечание.

Согласно приведенной информации, если не удалить PVC, в итоге кластер Kubernetes может начать выдавать ошибки. Некоторые из этих ошибок могут включать в себя невозможность создания, чтения, обновления, удаления ресурсов из API Kubernetes или выполнения таких команд, как, например, az arcdata dc export из узлов Kubernetes, из-за этой проблемы с хранилищем (нормальное поведение Kubernetes).

Например, в журналы могут быть записаны сообщения следующего вида:

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.

Следующий шаг

Создание сервера PostgreSQL с поддержкой Azure Arc