你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
删除已启用 Azure Arc 的 PostgreSQL 服务器
本文档介绍从 Azure Arc 设置中删除服务器的步骤。
删除服务器
例如,我们考虑从下面的设置中删除 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 不是必需的, 但建议这样做。 如果不回收这些 PVC,最终会出现错误,因为 Kubernetes 群集会认为磁盘空间不足,或者在创建新的 PVC 时使用相同的 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
删除已删除的 PostgreSQL 服务器的数据和日志 PVC。
此命令的一般格式为:
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 群集引发错误。 其中一些错误可能包括无法从 Kubernetes API 创建、读取、更新、删除资源,或者无法运行 az arcdata dc export
等命令,因为控制器 Pod 可能会因该存储问题(正常 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.