k8s pvc中的aws-efs“ ProvisioningFailed-没有匹配的卷插件”

时间:2019-01-24 20:31:58

标签: kubernetes kubernetes-pvc

我部署了efs-provisioner来将aws-efs作为pvc安装在k8s中。然后在创建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

1 个答案:

答案 0 :(得分:1)

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

在将efs provisoner升级到最新的编号版本v2.4.0(可在here中找到

)后,我遇到了问题

升级后,问题完全按照问题中所述进行了,但是在我的案例v0.1.2中,我可以确认它已恢复为旧版本后开始工作。

花了一段时间后,仔细分析了this github问题中的答案,我能够通过以下更改对其进行修复。

  1. 将StorageClass预置从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"

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

我希望这会有所帮助。谢谢。