You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AKS中删除PV时自动删除带快照租赁的Azure文件共享?

AKS删除带备份的Azure文件共享PV时,如何自动处理快照租赁?

解决办法

1. 配置StorageClass自动处理(推荐)

修改你的StorageClass,添加deleteOptions参数,让CSI驱动删除文件共享时自动包含快照并强制处理租赁:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azurefile
provisioner: file.csi.azure.com
parameters:
  skuName: Standard_LRS
  deleteOptions: "include-snapshots,include-leased-snapshots"  # 核心参数
reclaimPolicy: Delete  # 必须设为Delete才会自动删除PV和关联文件共享
volumeBindingMode: Immediate

设置后,删除PVC时,CSI驱动会自动调用带include-leased-snapshots参数的删除接口,直接清理带系统租赁的备份快照,无需手动干预。

2. 手动清理已卡住的PV和文件共享

如果已经出现PV卡在Released状态的情况,用Azure CLI强制删除文件共享,再清理Kubernetes中的PV:

# 强制删除带快照和活动租赁的文件共享
az storage share delete --name <你的文件共享名> --account-name <存储账户名> --delete-snapshots include --force-delete-snapshots-with-active-leases

# 手动删除Kubernetes中的PV
kubectl delete pv <你的PV名称>

3. 用PreDelete钩子联动备份停止

如果需要保留备份功能,又想自动触发清理流程,可以给PVC添加PreDelete钩子,在删除前先停止备份并删除备份数据:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
  annotations:
    pre-hook.command: "az backup protection stop --vault-name <备份Vault名称> --container-name <存储账户对应的备份容器名> --item-name <文件共享名> --delete-backup-data"

注意:需要确保AKS节点上已安装Azure CLI,且节点身份拥有备份操作的权限。

问题根源

Azure文件共享启用备份后,备份服务会给生成的快照添加系统级活动租赁,这类租赁无法手动释放。默认情况下,AKS的Azure CSI驱动删除文件共享时不会处理带租赁的快照,因此会返回DeleteShareWhenSnapshotLeased错误,导致PV卡在Released状态,文件共享无法删除。

而deleteOptions是Azure CSI驱动适配K8s 1.21+版本后支持的参数,专门用于处理这类带快照和租赁的文件共享删除场景。

内容的提问来源于stack exchange,提问作者Den4MD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:23:30