你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

卸载已启用 Azure Arc 的数据服务

本文介绍如何从 Azure 中删除已启用 Azure Arc 的数据服务资源。

警告

如本文所述删除资源时,操作不可逆。

部署已启用 Azure Arc 的数据服务涉及到部署 Azure Arc 数据控制器,以及部署数据服务的实例,例如由 Azure Arc 启用的 SQL 托管实例或已启用 Azure Arc 的 PostgreSQL 服务器。 部署将创建多个项目,例如:

  • 自定义资源定义 (CRD)
  • 群集角色
  • 群集角色绑定
  • API 服务
  • 命名空间(如果尚不存在)

在直接连接模式下,还存在其他一些项目,例如:

  • 群集扩展
  • 自定义位置

之前

在删除由 Azure Arc 启用的 SQL 托管实例或数据控制器等资源之前,请确保先完成以下操作:

  1. 对于间接连接的数据控制器,请按照将计费数据上传到 Azure - 间接连接模式中所述的说明,导出使用情况信息并将其上传到 Azure 以准确计算费用。

  2. 确保按照以下文章中的说明卸载在数据控制器上创建的所有数据服务:

删除由 Azure Arc 启用的 SQL 托管实例和/或已启用 Azure Arc 的 PostgreSQL 服务器的任何现有实例后,使用某种适合连接模式的方法删除数据控制器。

注意

如果以直连模式部署了数据控制器,请执行以下步骤:

如果以间接连接模式部署了数据控制器,请按照删除处于间接连接模式的数据控制器的步骤操作。

使用 Azure 门户删除处于直接连接模式的数据控制器

从 Azure 门户:

  1. 浏览到资源组,然后删除数据控制器。
  2. 选择已启用 Azure Arc 的 Kubernetes 群集,转到“概述”页:
    • 选择“设置”下面的“扩展”
    • 在“扩展”页中,选择 Azure Arc 数据服务扩展(类型为 microsoft.arcdataservices)并选择“卸载”
  3. (可选)删除数据控制器部署到的自定义位置。
  4. 如果在命名空间中没有创建其他资源,则还可删除 Kubernetes 群集上的该命名空间。

请参阅使用 Azure 门户管理 Azure 资源

使用 Azure CLI 删除处于直接连接模式的数据控制器

若要使用 Azure CLI 删除处于直接连接模式的数据控制器,需要执行三个步骤:

  1. 删除数据控制器
  2. 删除数据控制器扩展
  3. 删除自定义位置

删除数据控制器

连接到 Kubernetes 群集后,运行以下命令以删除数据控制器:

az arcdata dc delete --name <name of datacontroller> --resource-group <name of resource-group>

## Example
az arcdata dc delete --name arcdc --resource-group myrg

删除数据控制器扩展

删除数据控制器后,按如下所述删除数据控制器扩展。 若要获取 Arc 数据控制器扩展的名称,可以在 Azure 门户中浏览到已连接的群集的“概览”页并查看“扩展”选项卡,或使用以下命令获取群集上所有扩展的列表:

az k8s-extension list --resource-group <name of resource-group> --cluster-name <name of connected cluster> --cluster-type connectedClusters

## Example
az k8s-extension list --resource-group myrg --cluster-name mycluster --cluster-type  connectedClusters

获取 Arc 数据控制器扩展的名称后,运行以下命令以删除该扩展:

az k8s-extension delete --resource-group <name of resource-group> --cluster-name <name of connected cluster> --cluster-type connectedClusters --name <name of your Arc data controller extension> 

## Example
az k8s-extension delete --resource-group myrg --cluster-name mycluster --cluster-type connectedClusters --name myadsextension 

等待几分钟以完成上述操作。 运行以下命令以验证状态,确保已删除数据控制器:

kubectl get datacontrollers -A

删除自定义位置

如果此自定义位置未关联其他扩展,请按如下所述继续删除自定义位置:

az customlocation delete --name <Name of customlocation> --resource-group <Name of resource group>

## Example
az customlocation delete --name myCL --resource-group myrg

删除处于间接连接模式的数据控制器

根据定义,对于间接连接的数据控制器部署,Azure 门户并不知道你的 Kubernetes 群集。 因此,若要删除数据控制器,需要在 Kubernetes 群集和 Azure 门户中通过两个步骤将其删除。

  1. 从群集中删除处于间接连接模式的数据控制器
  2. 从 Azure 门户中删除处于间接连接模式的数据控制器

从群集中删除处于间接连接模式的数据控制器

运行以下命令,从 Kubernetes 群集中删除数据控制器:

az arcdata dc delete --name <name of datacontroller> --k8s-namespace <namespace of data controller> --use-k8s

## Example
az arcdata dc delete --name arcdc --k8s-namespace arc --use-k8s

从 Azure 门户中删除处于间接连接模式的数据控制器

在 Azure 门户中,浏览到包含数据控制器的资源组并将其删除。

删除 Kubernetes 群集项目

如上所述删除数据控制器后,执行以下步骤以彻底删除与已启用 Azure Arc 的数据服务相关的所有项目。 如果你的部署不完整或失败,或者你只是想要重新安装已启用 Azure Arc 的数据服务,则可能需要删除所有项目。

## Substitute your namespace into the variable
export mynamespace="arc"


## Delete Custom Resource Definitions
kubectl delete crd datacontrollers.arcdata.microsoft.com
kubectl delete crd postgresqls.arcdata.microsoft.com
kubectl delete crd sqlmanagedinstances.sql.arcdata.microsoft.com
kubectl delete crd sqlmanagedinstancerestoretasks.tasks.sql.arcdata.microsoft.com
kubectl delete crd dags.sql.arcdata.microsoft.com
kubectl delete crd exporttasks.tasks.arcdata.microsoft.com
kubectl delete crd monitors.arcdata.microsoft.com
kubectl delete crd activedirectoryconnectors.arcdata.microsoft.com
kubectl delete crd failovergroups.sql.arcdata.microsoft.com
kubectl delete crd kafkas.arcdata.microsoft.com
kubectl delete crd otelcollectors.arcdata.microsoft.com

## Delete Cluster roles and Cluster role bindings
kubectl delete clusterrole arcdataservices-extension
kubectl delete clusterrole $mynamespace:cr-arc-metricsdc-reader
kubectl delete clusterrole $mynamespace:cr-arc-dc-watch
kubectl delete clusterrole cr-arc-webhook-job
kubectl delete clusterrole $mynamespace:cr-upgrade-worker

kubectl delete clusterrolebinding $mynamespace:crb-arc-metricsdc-reader
kubectl delete clusterrolebinding $mynamespace:crb-arc-dc-watch
kubectl delete clusterrolebinding crb-arc-webhook-job
kubectl delete clusterrolebinding $mynamespace:crb-upgrade-worker

## API services Up to May 2021 release
kubectl delete apiservice v1alpha1.arcdata.microsoft.com
kubectl delete apiservice v1alpha1.sql.arcdata.microsoft.com

## June 2021 release
kubectl delete apiservice v1beta1.arcdata.microsoft.com
kubectl delete apiservice v1beta1.sql.arcdata.microsoft.com

## GA/July 2021 release
kubectl delete apiservice v1.arcdata.microsoft.com
kubectl delete apiservice v1.sql.arcdata.microsoft.com

## Delete mutatingwebhookconfiguration
kubectl delete mutatingwebhookconfiguration arcdata.microsoft.com-webhook-$mynamespace

(可选)还可按如下所示删除命名空间:

kubectl delete namespace <name of namespace>

## Example:
kubectl delete namespace arc

验证是否已删除所有对象

  1. 运行 kubectl get crd 并确保未返回包含 *.arcdata.microsoft.com 的结果。
  2. 运行 kubectl get clusterrole 并确保未返回 <namespace>:cr-* 格式的群集角色。
  3. 运行 kubectl get clusterrolebindings 并确保未返回 <namespace>:crb-* 格式的群集角色绑定。