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

AWS EKS环境下通过Kubernetes ServiceAccount访问EFS的权限认证故障排查求助

排查EFS CSI Driver权限认证失败问题

从你提供的日志和配置来看,核心问题是EFS CSI Controller的ServiceAccount无法通过IRSA(IAM Roles for Service Accounts)获取AWS权限,导致动态创建EFS访问点失败,进而PVC无法绑定、Pod调度异常。下面是按优先级排序的排查步骤:

1. 验证IAM角色的信任策略(Trust Policy)是否正确

IRSA的核心是让K8s ServiceAccount能假定对应的IAM角色,这依赖于角色的信任策略是否允许EKS集群的OIDC提供商进行角色切换。你只提到了权限策略,但信任策略配置错误是这类问题最常见的原因。

检查命令:

aws iam get-role --role-name AmazonEKS_EFS_CSI_Driver_Policy --query Role.AssumeRolePolicyDocument

正确的信任策略模板(需要替换成你的集群OIDC信息):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111111111111:oidc-provider/oidc.eks.<region>.amazonaws.com/id/<OIDC_ID>"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.<region>.amazonaws.com/id/<OIDC_ID>:aud": "sts.amazonaws.com",
          "oidc.eks.<region>.amazonaws.com/id/<OIDC_ID>:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa"
        }
      }
    }
  ]
}

说明:

  • <region>替换为你的EKS集群区域
  • <OIDC_ID>是你EKS集群的OIDC提供商ID,可以通过aws eks describe-cluster --name <cluster-name> --query "cluster.identity.oidc.issuer" --output text获取,取最后一段路径的字符串
  • 确保sub字段严格匹配你的ServiceAccount的命名空间和名称(kube-system/efs-csi-controller-sa)

2. 确认ServiceAccount的IRSA注解配置无误

检查你的ServiceAccount注解中的角色ARN是否完全正确:

annotations:
  eks.amazonaws.com/role-arn: arn:aws:iam::111111111111:role/AmazonEKS_EFS_CSI_Driver_Policy
  • 确认账号ID(111111111111)和角色名(AmazonEKS_EFS_CSI_Driver_Policy)没有拼写错误
  • 确保角色在当前AWS账号下存在,并且已经正确创建

3. 验证IAM权限策略是否包含动态配置所需权限

你使用的是efs-ap(动态访问点)模式,官方的EFS CSI Driver权限策略需要包含以下关键权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "efs:DescribeAccessPoints",
        "efs:DescribeFileSystems",
        "efs:CreateAccessPoint",
        "efs:DeleteAccessPoint"
      ],
      "Resource": "*"
    }
  ]
}

注意:如果你的EFS文件系统有资源策略,需要确保该IAM角色被允许访问该文件系统。

4. 检查EFS文件系统的资源策略

登录AWS控制台,进入EFS服务,找到你的文件系统(fs-92107410),查看其资源策略是否存在拒绝该IAM角色访问的规则,或者是否显式允许该角色的ARN进行操作。

如果资源策略设置了限制,需要添加允许该角色的语句,例如:

{
  "Version": "2012-10-17",
  "Id": "ExamplePolicy01",
  "Statement": [
    {
      "Sid": "AllowIAMRoleAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:role/AmazonEKS_EFS_CSI_Driver_Policy"
      },
      "Action": [
        "efs:ClientMount",
        "efs:ClientWrite",
        "efs:DescribeAccessPoints"
      ],
      "Resource": "arn:aws:efs:<region>:111111111111:file-system/fs-92107410"
    }
  ]
}

5. 确认EKS集群已关联OIDC提供商

IRSA要求EKS集群必须启用并关联AWS OIDC提供商,你可以通过以下命令检查:

aws eks describe-cluster --name <cluster-name> --query "cluster.identity.oidc"

如果输出中没有issuer字段,说明你需要先为集群创建OIDC提供商:

eksctl utils associate-iam-oidc-provider --cluster <cluster-name> --approve

最后验证步骤

完成上述排查后,可以重启EFS CSI Controller Pod,让其重新加载权限:

kubectl rollout restart deployment efs-csi-controller -n kube-system

然后查看PVC状态和Pod日志,确认是否能正常创建访问点和绑定卷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:39:13