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

Kubernetes静态PV与PVC绑定失败及删除插件匹配异常排查

问题:Azure文件共享PV绑定PVC失败,提示无匹配可删除卷插件

问题现象

  • PVC无法绑定PV,日志报错:volume "daglogs-pv" already bound to a different claim
  • PV状态显示为Failed,详细描述提示:error getting deleter volume plugin for volume "daglogs-pv": no deletable volume plugin matched

资源状态信息

PV状态

❯ kubectl get pv daglogs-pv -A
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                         STORAGECLASS    REASON   AGE
daglogs-pv   10Gi       RWX            Delete           Failed   airflow-sandbox/daglogs-pvc   azurefile-csi            47m

PV详细描述

❯ kubectl describe pv daglogs-pv -n airflow-sandbox
Name:            daglogs-pv
Labels:          app.kubernetes.io/managed-by=Helm
Annotations:     meta.helm.sh/release-name: airflow
                 meta.helm.sh/release-namespace: airflow-sandbox
                 pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    azurefile-csi
Status:          Failed
Claim:           airflow-sandbox/daglogs-pvc
Reclaim Policy:  Delete
Access Modes:    RWX
VolumeMode:      Filesystem
Capacity:        10Gi
Node Affinity:   <none>
Message:         error getting deleter volume plugin for volume "daglogs-pv": no deletable volume plugin matched
Source:
    Type:              CSI (a Container Storage Interface (CSI) volume source)
    Driver:            file.csi.azure.com
    FSType:            
    VolumeHandle:      airflow-sandbox
    ReadOnly:          false
    VolumeAttributes:      resourceGroup=testrg11
                           shareName=testairflowdaglogs
Events:
  Type     Reason              Age   From                         Message
  ----     ------              ----  ----                         -------
  Warning  VolumeFailedDelete  40m   persistentvolume-controller  error getting deleter volume plugin for volume "daglogs-pv": no deletable volume plugin matched

存储类信息

❯ kubectl describe sc azurefile-csi
Name:                  azurefile-csi
IsDefaultClass:        No
Annotations:           <none>
Provisioner:           file.csi.azure.com
Parameters:            skuName=Standard_LRS
AllowVolumeExpansion:  True
MountOptions:
  mfsymlinks
  actimeo=30
ReclaimPolicy:      Delete
VolumeBindingMode:  Immediate
Events:             <none>

配置代码

PVC配置(pvc.yaml)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: daglogs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: azurefile-csi
  volumeName: daglogs-pv
  resources:
    requests:
      storage: 10Gi

PV配置(pv.yaml)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: daglogs-pv
  namespace: {{ .Release.Namespace }}
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Delete
  storageClassName: azurefile-csi
  csi:
    driver: file.csi.azure.com
    readOnly: false
    volumeHandle: {{ .Release.Namespace }} #unique-volumeid12  
    volumeAttributes:
      resourceGroup: {{ .Values.resource_group_name }}  
      shareName: testairflowdaglogs
    nodeStageSecretRef:
      name: dag-logs-storage
      namespace: {{ .Release.Namespace }}
  mountOptions:
    - dir_mode=0777
    - file_mode=0777
    - uid=0
    - gid=0
    - mfsymlinks
    - cache=strict
    - nosharesock
    - nobrl

Secret配置(secret.yaml)

apiVersion: v1
kind: Secret
metadata:
  namespace: {{ .Release.Namespace }}
  name: dag-logs-storage
data:
  azurestorageaccountname: {{ .Values.daglogscred.storageaccountname | b64enc | quote }}
  azurestorageaccountkey:  {{ .Values.daglogscred.storageaccountkey  | b64enc | quote }}
type: Opaque

问题原因与修复方案

核心问题

  1. 回收策略不兼容:手动创建的PV使用Delete回收策略,但Azure File CSI驱动仅支持动态生成的卷使用Delete,手动创建的卷必须用Retain策略。
  2. VolumeHandle值错误:volumeHandle需设置为Azure存储账户的名称,而非Kubernetes命名空间,这是CSI驱动识别存储资源的唯一标识。

修复步骤

  1. 修改PV配置:
    • 将persistentVolumeReclaimPolicy改为Retain
    • 将volumeHandle的值替换为你的Azure存储账户名称
  2. 清理现有资源:
    kubectl delete pv daglogs-pv
    kubectl delete pvc daglogs-pvc -n airflow-sandbox
    
  3. 重新部署:应用修正后的PV、PVC配置
  4. 验证状态:
    kubectl get pv,pvc -n airflow-sandbox
    

额外检查项

  • 确认Secret中的存储账户名称和密钥正确
  • 确保Azure文件共享已存在,且资源组名称与PV配置一致
  • 检查集群节点已安装Azure File CSI驱动(AKS默认自带,自建集群需手动部署)

内容的提问来源于stack exchange,提问作者Filip Drzewiecki UK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:33:12