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

新AWS EKS集群PVC卡滞等待EBS CSI供应者,如何修复?

EKS集群PVC卡滞Pending问题排查及EBS CSI说明

问题背景

我们部署了AWS EKS集群,使用基于Cloud Native Buildpacks的Tekton Pipeline,但PipelineRun一直处于Pending状态,无法生成Pod资源。经排查,是创建的PersistentVolumeClaim(PVC)始终处于Pending状态,事件提示等待外部存储供应者ebs.csi.aws.com创建卷。

PVC配置

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: buildpacks-source-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi

PVC状态详情

Name:          buildpacks-source-pvc
Namespace:     default
StorageClass:  gp2
Status:        Pending
Volume:
Labels:        <none>
Annotations:   volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com
               volume.kubernetes.io/selected-node: ip-999-99-99-99.eu-central-1.compute.internal
               volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode:    Filesystem
Used By:       affinity-assistant-0b3d266b91-0
               affinity-assistant-53a7c08baf-0
               affinity-assistant-a375f28de3-0
               affinity-assistant-e8cb1a6e15-0
               buildpacks-test-pipeline-run-9rz4l-fetch-repository-pod
Events:
  Type    Reason                Age                     From                         Message
  ----    ------                ----                    ----                         -------
  Normal  ExternalProvisioning  3m43s (x561 over 143m)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "ebs.csi.aws.com" or manually created by system administrator

什么是EBS CSI?

EBS CSI(Elastic Block Store Container Storage Interface)是AWS推出的符合CNCF容器存储接口标准的驱动,用于在Kubernetes集群中管理AWS EBS卷。它替代了传统的Kubernetes内置in-tree存储驱动,提供更灵活的存储管理能力,支持动态创建EBS卷、挂载/卸载卷、快照管理等操作,让Kubernetes集群可以无缝对接AWS的EBS存储服务。


解决PVC卡滞Pending的步骤

1. 检查EBS CSI驱动是否已安装并正常运行

EBS CSI驱动包含控制器组件(部署为Deployment)和节点组件(部署为DaemonSet),需确保两者都处于正常运行状态:

  • 查看控制器Pod状态:
    kubectl get pods -n kube-system -l app=ebs-csi-controller
    
  • 查看节点插件DaemonSet状态:
    kubectl get daemonset ebs-csi-node -n kube-system
    

如果组件未安装或状态异常,需重新部署EBS CSI驱动。

2. 验证IAM权限配置

EBS CSI驱动需要足够的IAM权限来操作EBS卷,需确认:

  • 驱动使用的服务账号已关联AmazonEBSCSIDriverPolicy权限策略,或自定义策略包含以下核心权限:
    • ec2:CreateVolume
    • ec2:AttachVolume
    • ec2:DetachVolume
    • ec2:DeleteVolume
    • ec2:DescribeVolumes
  • 集群节点角色(若使用节点角色而非服务账号)也需包含上述权限。

3. 检查StorageClass配置

确认使用的gp2存储类已正确配置为使用EBS CSI驱动:

kubectl describe storageclass gp2

需确保Provisioner字段为ebs.csi.aws.com,且ReclaimPolicy、VolumeBindingMode等参数设置合理(例如VolumeBindingMode设为WaitForFirstConsumer时需确保Pod已调度到节点)。

4. 排查CSI驱动日志

查看EBS CSI控制器插件的日志,定位具体错误原因:

kubectl logs -n kube-system -l app=ebs-csi-controller -c ebs-plugin

常见错误包括权限不足、可用区EBS卷资源不足、驱动版本与EKS集群版本不兼容等。

5. 手动创建PersistentVolume(可选)

若上述步骤无法解决问题,可手动创建PV并与PVC绑定,绕过动态供应流程:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: buildpacks-source-pv
spec:
  capacity:
    storage: 500Mi
  accessModes:
    - ReadWriteOnce
  csi:
    driver: ebs.csi.aws.com
    volumeHandle: <your-ebs-volume-id>
  storageClassName: gp2

替换<your-ebs-volume-id>为已创建的EBS卷ID,应用后PVC将自动绑定该PV。


内容的提问来源于stack exchange,提问作者jonashackt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:45:09