0

我部署了 efs-provisioner 以将 k8s 中的 aws-efs 挂载为 pvc。然后我在创建 pvc 时收到“没有卷插件匹配”错误。

$ kubectl describe pvc efs -n dev
Name:       efs
Namespace:  dev
StorageClass:   aws-efs
Status:     Pending
Volume:     
Labels:     <none>
Annotations:    volume.beta.kubernetes.io/storage-class=aws-efs
Capacity:   
Access Modes:   
Events:
  FirstSeen LastSeen    Count   From                SubObjectPath   Type        Reason          Message
  --------- --------    -----   ----                -------------   --------    ------          -------
  32m       2m      21  persistentvolume-controller         Warning     ProvisioningFailed  no volume plugin matched

 kind: StorageClass
 apiVersion: storage.k8s.io/v1
 metadata:
   name: aws-efs
 provisioner: kubernetes.io/aws-efs

efs-provisioner-dep.yml 在https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/aws/efs/deploy/deployment.yaml

4

1 回答 1

1

我知道这有点旧,并且 efs 供应商已正式弃用。但仍然看到一些集群和客户在使用它。我遇到了同样的问题并花了很长时间对其进行故障排除,我相信这对遇到同样问题的人会有所帮助。

在将 efs provisoner 升级到最新的编号版本 v2.4.0 后,我遇到了这个问题,可以在这里找到

升级后它完全进入了问题中描述的状态,但我可以确认它在我的案例 v0.1.2 恢复到旧版本后已经开始工作。

在花了一些时间后,仔细分析了这个github 问题中的答案,我能够通过以下更改来修复它。

  1. 将 StorageClass prvisioner 从更改kubernetes.io/aws-efs为其他内容,例如example.com/aws-efs
  2. 在环境变量中使用更新的配置器更新 efs 配置器部署,如下所示
         env:
           - name: FILE_SYSTEM_ID
             value: "{{ .Values.efs_fs_id }}"
           - name: AWS_REGION
             value: "{{ .Values.region }}"
           - name: PROVISIONER_NAME
             value: "example.com/aws-efs"

kubernetes.io/aws-efs在使用更新的配置器创建新的之前,请确保删除以前的 StorageClass 。

我希望这有帮助。谢谢。

于 2020-11-26T03:36:09.257 回答