在不同的命名空间上添加 PersistentVolumeClaim 并出现错误“无法使用 StorageClass 提供卷。缺少 provisioningMode 参数”
Adding PersistentVolumeClaim on a different namespace with error 'failed to provision volume with StorageClass.. Missing provisioningMode parameter"
我正在关注 https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html 到 link EFS 到 EKS。
我的 k8s 集群下有两个命名空间:dev
和 stage
,据我了解,我需要有两个映射到共享 PersistentVolume 和 StorageClass 的 PersistentVolumeClaims。所以在我 运行 下面 3 个命令之后:
kubectl apply -f specs/pv.yaml
kubectl apply -f specs/claim.yaml
kubectl apply -f specs/storageclass.yaml
并且从 kubectl get sc,pv,pvc1 -n dev
开始,我能够很好地看到所有 3 个项目。但是,当我尝试添加到 stage
命名空间 - kubectl apply -f specs/claim.yaml --namespace=stage
时,我遇到了以下错误,因为 efs-claim
陷入了永远的 PENDING 状态:
Name: efs-claim
Namespace: stage
StorageClass: efs-sc
Status: Pending
Volume:
Labels: <none>
Annotations: volume.beta.kubernetes.io/storage-provisioner: efs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: foo-api-stage-chart-12345-abcde
foo-api-stage-chart-12345-abcde
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Provisioning 107s efs.csi.aws.com_ip-xxx External provisioner is provisioning volume for claim "stage/efs-claim"
Warning ProvisioningFailed 107s efs.csi.aws.com_ip-xxx failed to provision volume with StorageClass "efs-sc": rpc error: code = InvalidArgument desc = Missing provisioningMode parameter
Normal ExternalProvisioning 4s (x8 over 107s) persistentvolume-controller waiting for a volume to be created, either by external provisioner "efs.csi.aws.com" or manually created by system administrator
是什么原因造成的
efs.csi.aws.com_ip-xxx failed to provision volume with StorageClass "efs-sc": rpc error: code = InvalidArgument desc = Missing provisioningMode parameter
我不必在 dev
命名空间上提供这样的参数,所以为什么像 stage
这样的不同命名空间需要它?
要解决您看到的错误,请重新应用您的 StorageClass:
...
parameters:
provisioningMode: efs-ap
fileSystemId: <ID of the file system created on EFS>
...
如果多个 pods 转到 read/write 到文件系统,请重新应用 PersistentVolume:
...
spec:
...
accessModes:
- ReadWriteMany
...
如果问题仍然存在,请 post 在您的问题中添加您的 StorageClass、PersistentVolumeClaim 和 PersistentVolume 规范。
我正在关注 https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html 到 link EFS 到 EKS。
我的 k8s 集群下有两个命名空间:dev
和 stage
,据我了解,我需要有两个映射到共享 PersistentVolume 和 StorageClass 的 PersistentVolumeClaims。所以在我 运行 下面 3 个命令之后:
kubectl apply -f specs/pv.yaml
kubectl apply -f specs/claim.yaml
kubectl apply -f specs/storageclass.yaml
并且从 kubectl get sc,pv,pvc1 -n dev
开始,我能够很好地看到所有 3 个项目。但是,当我尝试添加到 stage
命名空间 - kubectl apply -f specs/claim.yaml --namespace=stage
时,我遇到了以下错误,因为 efs-claim
陷入了永远的 PENDING 状态:
Name: efs-claim
Namespace: stage
StorageClass: efs-sc
Status: Pending
Volume:
Labels: <none>
Annotations: volume.beta.kubernetes.io/storage-provisioner: efs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: foo-api-stage-chart-12345-abcde
foo-api-stage-chart-12345-abcde
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Provisioning 107s efs.csi.aws.com_ip-xxx External provisioner is provisioning volume for claim "stage/efs-claim"
Warning ProvisioningFailed 107s efs.csi.aws.com_ip-xxx failed to provision volume with StorageClass "efs-sc": rpc error: code = InvalidArgument desc = Missing provisioningMode parameter
Normal ExternalProvisioning 4s (x8 over 107s) persistentvolume-controller waiting for a volume to be created, either by external provisioner "efs.csi.aws.com" or manually created by system administrator
是什么原因造成的
efs.csi.aws.com_ip-xxx failed to provision volume with StorageClass "efs-sc": rpc error: code = InvalidArgument desc = Missing provisioningMode parameter
我不必在 dev
命名空间上提供这样的参数,所以为什么像 stage
这样的不同命名空间需要它?
要解决您看到的错误,请重新应用您的 StorageClass:
...
parameters:
provisioningMode: efs-ap
fileSystemId: <ID of the file system created on EFS>
...
如果多个 pods 转到 read/write 到文件系统,请重新应用 PersistentVolume:
...
spec:
...
accessModes:
- ReadWriteMany
...
如果问题仍然存在,请 post 在您的问题中添加您的 StorageClass、PersistentVolumeClaim 和 PersistentVolume 规范。