无法删除Azure 容器实例使用的虚拟网络或子网
本文讨论删除Azure 容器实例(ACI)使用的虚拟网络(VNet)或子网时发生的错误,并提供解决方法。
现象
删除 ACI 使用的子网时,会收到类似于以下错误:
Failed to delete subnet '<subnet-name>'. Error: 'Subnet /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name> requires any of the following delegations [Microsoft.ContainerInstance/containerGroups] to reference service association link / subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>/serviceAssociationLinks/acisal.'
Subnet <subnet-name> is in use by /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/networkProfiles/aci-network-profile-<network-profile-name>/containerNetworkInterfaceConfigurations/eth0/ipConfigurations/ipconfigprofile and cannot be deleted. In order to delete the subnet, delete all the resources within the subnet. See aka.ms/deletesubnet.
Failed to delete subnet '<subnet-name>'. Error: Subnet <subnet-name> is in use by /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/networkProfiles/aci-network-profile-<network-profile-name>/containerNetworkInterfaceConfigurations/eth0/ipConfigurations/ipconfigprofile/aci-network-profile-<network-profile-name>/eth0/ipconfigprofile and cannot be deleted. In order to delete the subnet, delete all the resources within the subnet. See aka.ms/deletesubnet.
删除 ACI 使用的 VNet 时,会收到以下错误:
Failed to delete virtual network '<vnet-name>'. Error: 'Subnet /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name> requires any of the following delegations [Microsoft.ContainerInstance/containerGroups] to reference service association link /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>/serviceAssociationLinks/acisal.'
原因 1:服务关联链接阻止删除 VNET/子网
ACI 所需的子网委派必须引用残差服务关联链接,从而阻止删除 ACI 使用的 VNet 或子网。
解决方法:删除服务关联链接
导航到Azure 门户中的子网。
将子网委派更改为 “无”。
使用
az network profile delete
命令删除网络配置文件,以确保没有网络配置文件链接到子网。如果步骤 3 中的命令失败,则可能存在一个挥之不去的网络配置文件。 若要删除挥之不去的网络配置文件,请使用以下命令:
az network profile delete --id resourceIdOfNetworkProfile
如果网络配置文件仍阻止子网更新,请尝试再次将子网委派设置为 “无 ”。
如果前面的步骤不起作用,请尝试使用指定的 API 版本(例如版本 2018-10-01)通过 Azure CLI 删除服务关联链接:
az resource delete --ids /subscriptions/<subscription-id>/resourceGroups/<resourcegroup-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>/providers/Microsoft.ContainerInstance/serviceAssociationLinks/default --api-version 2018-10-01
原因 2:网络配置文件阻止删除 VNet/子网
删除容器组时,可能无法正确删除在创建容器组期间由 ACI 创建的网络配置文件。 这会导致 VNet 或子网中保留的内容,从而阻止某些删除操作。
解决方法 1:从Azure 门户中删除容器组的网络配置文件
删除所有 ACI 容器组后,请执行以下步骤:
- 转至资源组。
- 选择“显示隐藏的类型”。 默认情况下,网络配置文件隐藏在Azure 门户中。
- 选择与容器组相关的网络配置文件。
- 选择“删除”。
- 删除 VNet 或子网。
解决方法 2:通过 Azure CLI 删除容器组的网络配置文件
删除所有 ACI 容器组后,请执行以下步骤:
获取网络配置文件 ID:
NetworkProfile=$(az network vnet subnet show -g $RES_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME -o tsv --query ipConfigurationProfiles[].id)
删除网络配置文件:
az network profile delete --ids $NetworkProfile --yes
删除子网:
az network vnet subnet delete --resource-group $RES_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME
删除 VNet:
az network vnet delete --resource-group $RES_GROUP --name $SUBNET_NAME
解决方法 3:通过 Azure CLI 更新 containerNetworkInterfaceConfigurations 属性
如果通过 Azure 门户 删除网络配置文件并 Azure CLI 失败,请将网络配置文件属性containerNetworkInterfaceConfigurations
更新为空列表:
获取网络配置文件 ID:
NETWORK_PROFILE_ID=$(az network profile list --resource-group <resource-group-name> --query [0].id --output tsv)
更新网络配置文件:
az resource update --ids $NETWORK_PROFILE_ID --set properties.containerNetworkInterfaceConfigurations=[]
删除网络配置文件和子网。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。