You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS集群中ReadWriteMany动态PVC处于Pending状态的解决求助

问题:AWS EKS中EFS CSI驱动无法动态创建PV导致PVC处于Pending状态

环境与现状

  • 已创建EFS文件系统,StorageClass efs-sc 创建成功:
NAME     PROVISIONER       RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
efs-sc   efs.csi.aws.com   Delete          Immediate           false                  5m17s
  • PVC efs-claim-1 持续处于pending状态,事件提示:
Events:
  Type     Reason                Age                     From                         Message
  ----     ------                ----                    ----                         -------
  Normal   ExternalProvisioning  2m18s (x17 over 6m18s)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "efs.csi.aws.com" or manually created by system administrator
  • 使用的清单文件(StorageClass、PVC、Deployment)如下:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: efs-sc
provisioner: efs.csi.aws.com
parameters:
  provisioningMode: efs-ap
  fileSystemId: fs-XXXX
  directoryPerms: "700"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: efs-claim-1
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: efs-sc
  resources:
    requests:
      storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
  name: debug-app
spec:
  replicas: 1
  selector:
    matchLabels:
      component: debug-app
  template:
    metadata:
      labels:
        app: debug-app
        component: debug-app
    spec:
      containers:
      - image: ubuntu:20.04
        imagePullPolicy: IfNotPresent
        name: debug-app
        command: ["/bin/sh","-c"]
        args: 
          - sleep 3650d
        ports:
        - containerPort: 8000
        resources:
          limits:
            cpu: 2
            memory: 4Gi
          requests:
            cpu: 10m
            memory: 16Mi
        volumeMounts:
        - name: persistent-storage
          mountPath: /data
      volumes:
      - name: persistent-storage
        persistentVolumeClaim:
          claimName: efs-claim-1
  • 未使用Fargate Profile,已重新创建EFS存储但问题依旧。

解决方法

1. 确认EFS CSI驱动部署状态

动态PV创建依赖EFS CSI驱动,先检查驱动组件是否正常运行:

kubectl get pods -n kube-system -l app=efs-csi-controller
kubectl get pods -n kube-system -l app=efs-csi-node
  • 确保所有Pod状态为Running,若有异常,查看日志定位问题:
kubectl logs -n kube-system <efs-csi-controller-pod-name> -c efs-plugin
kubectl logs -n kube-system <efs-csi-node-pod-name> -c efs-plugin

2. 验证EFS与EKS集群的网络连通性

  • 确认EFS挂载目标与EKS节点处于同一VPC,节点所在子网的安全组需允许NFS流量(端口2049)进出EFS的安全组。
  • 登录EKS节点,手动挂载EFS测试连通性:
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 <efs-file-system-id>.efs.<region>.amazonaws.com:/ /tmp/test-efs

挂载失败则检查安全组规则或VPC路由配置。

3. 修正StorageClass参数配置

  • 替换fileSystemId为实际的EFS文件系统ID,确保无拼写错误。
  • provisioningMode: efs-ap 为访问点模式,若不需要访问点,可改为直接挂载模式efs,更新StorageClass后重建PVC:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: efs-sc
provisioner: efs.csi.aws.com
parameters:
  provisioningMode: efs
  fileSystemId: <实际EFS ID>
  directoryPerms: "700"

4. 检查IAM权限配置

EFS CSI驱动需要以下IAM权限来创建访问点和挂载存储:

  • elasticfilesystem:DescribeFileSystems
  • elasticfilesystem:CreateAccessPoint
  • elasticfilesystem:DeleteAccessPoint
  • elasticfilesystem:DescribeAccessPoints
    若使用IAM Roles for Service Accounts (IRSA),需确认CSI控制器的服务账户已关联包含上述权限的IAM策略。

5. 调整PVC存储请求配置

EFS为弹性存储,storage:5Gi仅作为标识,不限制实际容量。可尝试移除resources.requests.storage字段,或保留但确认无参数冲突。

验证步骤

完成上述检查后,重建PVC验证结果:

kubectl delete pvc efs-claim-1
kubectl apply -f <你的清单文件路径>

查看PVC状态:

kubectl get pvc efs-claim-1

若状态变为Bound,则动态PV创建成功。


内容的提问来源于stack exchange,提问作者Reda E.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:37:15