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

EKS集群中创建关联PVC的测试Pod时,出现AWS持久化存储缓存凭证刷新失败问题求助

EKS集群中创建关联PVC的测试Pod时,出现AWS持久化存储缓存凭证刷新失败问题求助

大家好,我在EKS集群里尝试创建一个关联了PVC的测试Pod,用来验证持久化存储的功能,但PVC一直卡在Pending状态,describe的时候提示ProvisioningFailed,错误信息是EBS CSI控制器创建卷失败。以下是我的配置和错误详情,求各位帮忙看看问题出在哪?

我的PVC配置(pvc.yaml)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
  namespace: my-ns  
spec:
  accessModes:
    - ReadWriteOnce  
  resources:
    requests:
      storage: 10Gi 
  storageClassName: gp2  

我的Pod配置(pod.yaml)

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
  namespace: my-ns
spec:
  containers:
    - name: test-container
      image: busybox  
      command: ["sleep", "3600"]  
      volumeMounts:
        - mountPath: /mnt/data  
          name: my-pvc-volume 
  volumes:
    - name: my-pvc-volume  
      persistentVolumeClaim:
        claimName: my-pvc  

PVC的错误描述

Warning ProvisioningFailed 4m58s (x5 over 14m)
ebs.csi.aws.com_ebs-csi-controller-dd646df8-7ddpr_aca98eff-9b9a-4bce-8049-b34905dffc7e
failed to provision volume with StorageClass "gp2": rpc error: code = Internal desc = Could not...


看起来你遇到的是EKS里EBS CSI驱动创建卷失败的典型问题,我之前维护EKS集群时也踩过类似的坑,给你几个实用的排查方向,按顺序试应该能定位到问题:

  1. 先确认EBS CSI驱动的IAM权限是否到位
    EBS CSI控制器的服务账号必须绑定拥有EC2操作权限的IAM角色,比如ec2:CreateVolume、ec2:AttachVolume、ec2:DescribeVolumes这些核心权限是少不了的。你可以登录AWS控制台,找到对应的IAM角色(通常命名类似AmazonEKS_EBS_CSI_DriverRole),检查关联的权限策略是否完整。如果是用eksctl一键创建的集群,默认会配置好这个角色,但手动搭建的集群很容易漏掉这一步。

  2. 检查gp2存储类的Provisioner配置
    gp2存储类的Provisioner必须是ebs.csi.aws.com,这是AWS官方EBS CSI驱动的标识。你可以用这条命令验证:

kubectl get storageclass gp2 -o yaml

如果spec.provisioner字段写成了旧版的kubernetes.io/aws-ebs(那是in-tree驱动,现在EKS已经推荐用CSI驱动了),肯定会导致卷创建失败。

  1. 拉取EBS CSI控制器的完整日志找线索
    你的错误信息被截断了,完整的日志能直接告诉你问题根源。去kube-system命名空间下找到EBS CSI控制器的Pod,查看ebs-plugin容器的日志:
kubectl logs -n kube-system -l app=ebs-csi-controller -c ebs-plugin

我之前碰到过类似的情况,日志里明确显示“无法获取STS临时凭证”,后来排查发现是集群的OIDC提供商没配置好,导致服务账号拿不到有效的AWS凭证。

  1. 验证集群的OIDC提供商是否正常工作
    EKS里IAM角色绑定服务账号完全依赖OIDC提供商,如果你的集群没配置OIDC,或者OIDC的ARN配置错误,服务账号就没法通过STS获取临时凭证,自然调用不了EC2 API创建EBS卷。你可以在EKS控制台的集群详情页,进入“身份提供商”板块,确认OIDC提供商已经配置,并且对应的IAM角色信任策略里包含了EBS CSI服务账号的ARN。

  2. 检查VPC网络能否访问EC2 API
    如果你的EKS集群是私有集群(节点没有公网IP),必须配置EC2的VPC端点,让EBS CSI控制器能在内网访问EC2 API。如果是公有集群,确保节点所在子网有公网访问权限,且安全组允许出站访问443端口(EC2 API用的是HTTPS)。

  3. 确认集群与EBS卷的区域一致性
    虽然gp2是区域级存储,但也得确保集群节点所在的AWS区域,和PVC要创建的EBS卷区域一致(不过正常情况下PVC会自动匹配集群区域,这个概率比较小,但也可以顺手排查下)。

备注:内容来源于stack exchange,提问作者Container-Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:13:07