Не удается подключить том к pod в Kubernetes с помощью Azure file provisioner

#azure #kubernetes #storage #kubernetes-pod

#azure #kubernetes #Хранение #kubernetes-pod

Вопрос:

У меня проблема в том, что я не могу подключить тома к pod в Kubernetes, используя Azure File CSI в Azure cloud.

Сообщение об ошибке, которое я получаю в pod, является

   Warning  FailedMount  38s    kubelet            Unable to attach or mount volumes: unmounted volumes=[sensu-backend-etcd], unattached volumes=[default-token-42kfh sensu-backend-etcd sensu-asset-server-ca-cert]: timed out waiting for the condition
 

Мой класс хранилища выглядит следующим образом:

 items:
- allowVolumeExpansion: true
  apiVersion: storage.k8s.io/v1
  kind: StorageClass
  metadata:
    annotations:
      kubectl.kubernetes.io/last-applied-configuration: |
        {"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"},"name":"azure-csi-standard-lrs"},"mountOptions":["dir_mode=0640","file_mode=0640","uid=0","gid=0","mfsymlinks","cache=strict","nosharesock"],"parameters":{"location":"eastus","resourceGroup":"kubernetes-resource-group","shareName":"kubernetes","skuName":"Standard_LRS","storageAccount":"kubernetesrf"},"provisioner":"kubernetes.io/azure-file","reclaimPolicy":"Delete","volumeBindingMode":"Immediate"}
      storageclass.kubernetes.io/is-default-class: "true"
    creationTimestamp: "2020-12-21T19:16:19Z"
    managedFields:
    - apiVersion: storage.k8s.io/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:allowVolumeExpansion: {}
        f:metadata:
          f:annotations:
            .: {}
            f:kubectl.kubernetes.io/last-applied-configuration: {}
            f:storageclass.kubernetes.io/is-default-class: {}
        f:mountOptions: {}
        f:parameters:
          .: {}
          f:location: {}
          f:resourceGroup: {}
          f:shareName: {}
          f:skuName: {}
          f:storageAccount: {}
        f:provisioner: {}
        f:reclaimPolicy: {}
        f:volumeBindingMode: {}
      manager: kubectl-client-side-apply
      operation: Update
      time: "2020-12-21T19:16:19Z"
    name: azure-csi-standard-lrs
    resourceVersion: "15914"
    selfLink: /apis/storage.k8s.io/v1/storageclasses/azure-csi-standard-lrs
    uid: 3de65d08-14e7-4d0b-a6fe-39ab9a714191
  mountOptions:
  - dir_mode=0640
  - file_mode=0640
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - nosharesock
  parameters:
    location: eastus
    resourceGroup: kubernetes-resource-group
    shareName: kubernetes
    skuName: Standard_LRS
    storageAccount: kubernetesrf
  provisioner: kubernetes.io/azure-file
  reclaimPolicy: Delete
  volumeBindingMode: Immediate
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""
 

Мои PV и PVC связаны:

 sensu-backend-etcd   10Gi       RWX            Retain           Bound    sensu-system/sensu-backend-etcd   azure-csi-standard-lrs            4m31s
 
 NAME                 STATUS   VOLUME               CAPACITY   ACCESS MODES   STORAGECLASS             AGE
sensu-backend-etcd   Bound    sensu-backend-etcd   10Gi       RWX            azure-csi-standard-lrs   4m47s
 

В журнале kubelet я получаю следующее:

 Dez 21 19:26:37 kubernetes-3 kubelet[34828]: E1221 19:26:37.766476   34828 pod_workers.go:191] Error syncing pod bab5a69a-f8af-43f1-a3ae-642de8daa05d ("sensu-backend-0_sensu-system(bab5a69a-f8af-43f1-a3ae-642de8daa05d)"), skipping: unmounted volumes=[sensu-backend-etcd], unattached volumes=[sensu-backend-etcd sensu-asset-server-ca-cert default-token-42kfh]: timed out waiting for the condition
Dez 21 19:26:58 kubernetes-3 kubelet[34828]: I1221 19:26:58.002474   34828 reconciler.go:224] operationExecutor.VerifyControllerAttachedVolume started for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") pod "sensu-backend-0" (UID: "bab5a69a-f8af-43f1-a3ae-642de8daa05d")
Dez 21 19:26:58 kubernetes-3 kubelet[34828]: E1221 19:26:58.006699   34828 nestedpendingoperations.go:301] Operation for "{volumeName:kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd podName: nodeName:}" failed. No retries permitted until 2020-12-21 19:29:00.006639988  0000 UTC m= 3608.682310977 (durationBeforeRetry 2m2s). Error: "Volume not attached according to node status for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") pod "sensu-backend-0" (UID: "bab5a69a-f8af-43f1-a3ae-642de8daa05d") "
Dez 21 19:28:51 kubernetes-3 kubelet[34828]: E1221 19:28:51.768309   34828 kubelet.go:1594] Unable to attach or mount volumes for pod "sensu-backend-0_sensu-system(bab5a69a-f8af-43f1-a3ae-642de8daa05d)": unmounted volumes=[sensu-backend-etcd], unattached volumes=[sensu-backend-etcd sensu-asset-server-ca-cert default-token-42kfh]: timed out waiting for the condition; skipping pod
Dez 21 19:28:51 kubernetes-3 kubelet[34828]: E1221 19:28:51.768335   34828 pod_workers.go:191] Error syncing pod bab5a69a-f8af-43f1-a3ae-642de8daa05d ("sensu-backend-0_sensu-system(bab5a69a-f8af-43f1-a3ae-642de8daa05d)"), skipping: unmounted volumes=[sensu-backend-etcd], unattached volumes=[sensu-backend-etcd sensu-asset-server-ca-cert default-token-42kfh]: timed out waiting for the condition
Dez 21 19:29:00 kubernetes-3 kubelet[34828]: I1221 19:29:00.103881   34828 reconciler.go:224] operationExecutor.VerifyControllerAttachedVolume started for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") pod "sensu-backend-0" (UID: "bab5a69a-f8af-43f1-a3ae-642de8daa05d")
Dez 21 19:29:00 kubernetes-3 kubelet[34828]: E1221 19:29:00.108069   34828 nestedpendingoperations.go:301] Operation for "{volumeName:kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd podName: nodeName:}" failed. No retries permitted until 2020-12-21 19:31:02.108044076  0000 UTC m= 3730.783715065 (durationBeforeRetry 2m2s). Error: "Volume not attached according to node status for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") pod "sensu-backend-0" (UID: "bab5a69a-f8af-43f1-a3ae-642de8daa05d") "
Dez 21 19:31:02 kubernetes-3 kubelet[34828]: I1221 19:31:02.169246   34828 reconciler.go:224] operationExecutor.VerifyControllerAttachedVolume started for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") pod "sensu-backend-0" (UID: "bab5a69a-f8af-43f1-a3ae-642de8daa05d")
Dez 21 19:31:02 kubernetes-3 kubelet[34828]: E1221 19:31:02.172474   34828 nestedpendingoperations.go:301] Operation for "{volumeName:kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd podName: nodeName:}" failed. No retries permitted until 2020-12-21 19:33:04.172432877  0000 UTC m= 3852.848103766 (durationBeforeRetry 2m2s). Error: "Volume not attached according to node status for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") pod "sensu-backend-0" (UID: "bab5a69a-f8af-43f1-a3ae-642de8daa05d") "
Dez 21 19:31:09 kubernetes-3 kubelet[34828]: E1221 19:31:09.766084   34828 kubelet.go:1594] Unable to attach or mount volumes for pod "sensu-backend-0_sensu-system(bab5a69a-f8af-43f1-a3ae-642de8daa05d)": unmounted volumes=[sensu-backend-etcd], unattached volumes=[default-token-42kfh sensu-backend-etcd sensu-asset-server-ca-cert]: timed out waiting for the condition; skipping pod
 

В модуле kube-controller-manager я получаю:

 E1221 20:21:34.069309       1 csi_attacher.go:500] kubernetes.io/csi: attachdetacher.WaitForDetach timeout after 2m0s [volume=sensu-backend-etcd; attachment.ID=csi-9a83de4bef35f5d01e10e3a7d598204c459cac705371256e818e3a35b4b29e4e]
E1221 20:21:34.069453       1 nestedpendingoperations.go:301] Operation for "{volumeName:kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd podName: nodeName:kubernetes-3}" failed. No retries permitted until 2020-12-21 20:21:34.569430175  0000 UTC m= 6862.322990347 (durationBeforeRetry 500ms). Error: "AttachVolume.Attach failed for volume "sensu-backend-etcd" (UniqueName: "kubernetes.io/csi/file.csi.azure.com^sensu-backend-etcd") from node "kubernetes-3" : attachdetachment timeout for volume sensu-backend-etcd"
I1221 20:21:34.069757       1 event.go:291] "Event occurred" object="sensu-system/sensu-backend-0" kind="Pod" apiVersion="v1" type="Warning" reason="FailedAttachVolume" message="AttachVolume.Attach failed for volume "sensu-backend-etcd" : attachdetachment timeout for volume sensu-backend-etcd"
 

Любой, кто знает эту ошибку и как ее устранить?

Заранее спасибо.

С наилучшими пожеланиями, rforberger

Комментарии:

1. Когда вы просматриваете том в консоли Azure, он уже подключен к другому узлу? Я бы предположил kube-controller-manager , что журналы (или, если у вас есть модуль драйвера CSI в кластере) также будут информативными

2. @mdaniel Это общий файловый ресурс Azure, а не том в Azure. Я не вижу, что он подключен к какому-либо узлу, это просто общий ресурс, подобный общему ресурсу samba.

3. Тогда я бы предположил, что на узле отсутствует механизм монтирования для mount.cifs или его друзей; вы уже выполнили документированные шаги по устранению неполадок ?

4. Я установил mount.cifs на узле, где сейчас работает модуль с томом, но все та же ошибка. Я проверяю шаги по устранению неполадок, но не могу найти там какую-либо соответствующую ошибку, в основном вызовы GRPC.

Ответ №1:

Я исправил это.

Я переключился на disk.csi.azure.com провайдеру и мне пришлось использовать имя тома в качестве ссылки на ресурс для Azure, например

  volumeHandle: /subscriptions/XXXXXXXXXXXXXXXXXXXXXX/resourcegroups/kubernetes-resource-group/providers/Microsoft.Compute/disks/sensu-backend-etcd
 

в PV.

Кроме того, у меня были некоторые параметры монтирования в PV, которые не работали с Azure disk provisioner.