在 kubernetes 中将 pvc 与静态 pv 绑定的问题

问题描述 投票:0回答:1

我正在尝试使用通过 terraform(准确地说是文件共享)创建的存储帐户并创建持久卷和持久卷声明并使用 pvc 存储来自 Apache Airflow 的 dag 日志,但是,看起来 pvc 无法绑定到 pv 作为我可以在日志中看到以下消息:

 volume "daglogs-pv" already bound to a different claim.

当我检查 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>

我迷路了。试图解决这个问题,但我做不到。供应商或驱动程序有问题吗?

我正在从以下链接关注 MS 指南:
https://learn.microsoft.com/en-us/azure/aks/azure-csi-blob-storage-provision?tabs=mount-nfs%2Csecret#statically-provision-a-volume.
我正在使用 helm 部署整个东西,pvc/pv 被创建为模板。这是代码:

pvc.yaml

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

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.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
azure kubernetes airflow kubernetes-helm azure-aks
1个回答
0
投票

创建 PV 和 PVC 时出现此错误的原因可能有很多。以下是您可以执行的几项检查以确定问题。

确保您已使用在存储类别中指定的正确 SKU 创建了存储帐户。如果你使用的是 azure 提供的内置存储类,请使用命令查看详细信息

kubectl describe sc <storage-class-name>
如果您将 Standard_LRS 指定为 skuName,请创建具有相同配置的存储帐户。 enter image description here

验证清单文件中使用的 CSI 驱动程序。使用

kubectl get csidrivers
并检查您在清单文件中使用的驱动程序。 enter image description here

如果之前没有启用,请使用以下命令启用 CSI 驱动程序。

az aks update -n cluster-name -g resource-group-name --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller

有关驱动程序的更多详细信息,请参阅此链接

此外,帖子中提供的链接适用于 Azure Blob 存储。请点击此链接Azure Fileshare PV 和 PVC | Microsoft 文档 作为创建 PV 和 PVC 的参考。我能够按照上述检查创建 PV 和 PVC。

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.