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

升级EKS至1.23后无法创建PVC问题求助

问题排查与解决方案

1. 确认OIDC提供商是否正确配置

错误核心提示No OpenIDConnect provider found in your account for https://oidc.eks.us-east-1.amazonaws.com/id/123456788990,说明EBS CSI驱动的服务账号无法通过OIDC获取AWS凭证,按以下步骤验证修复:

  • 提取集群OIDC issuer的唯一ID:
    ISSUER_ID=$(aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)
    
  • 检查IAM中是否存在对应OIDC提供商:
    aws iam list-open-id-connect-providers | grep $ISSUER_ID
    
    若无输出,说明该集群的OIDC提供商未创建,手动执行创建命令:
    aws iam create-open-id-connect-provider \
      --url $(aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text) \
      --thumbprint-list "9e99a48a9960b14926bb7f3b02e22da2b0ab7280" \
      --client-id-list "sts.amazonaws.com"
    
    注:上述指纹为AWS OIDC服务固定值,无需修改。

2. 验证EBS CSI驱动的IAM角色绑定

OIDC提供商创建后,需确保CSI驱动的服务账号绑定了具备EBS权限的IAM角色:

  • 查看CSI控制器的服务账号信息:
    kubectl get serviceaccount ebs-csi-controller-sa -n kube-system -o yaml
    
  • 确认服务账号的eks.amazonaws.com/role-arn注解指向正确的IAM角色,同时检查该IAM角色的信任策略是否允许OIDC提供商的服务账号扮演:
    信任策略示例(替换占位符为实际值):
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/123456788990"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "oidc.eks.us-east-1.amazonaws.com/id/123456788990:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
            }
          }
        }
      ]
    }
    

3. 修正StorageClass配置

从你的StorageClass输出看,默认gp2使用的是in-tree驱动的provisionerkubernetes.io/aws-ebs,但错误显示CSI控制器ebs.csi.aws.com在处理该SC的PVC,存在配置冲突,按以下检查:

  • 查看gp2存储类的详细配置:
    kubectl get storageclass gp2 -o yaml
    
    如果provisioner被错误修改为ebs.csi.aws.com,可选择:
    • 改回kubernetes.io/aws-ebs继续使用in-tree驱动(注意1.23+版本该驱动已被弃用,建议迁移);
    • 创建新的CSI版存储类并设为默认:
      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: ebs-gp2
        annotations:
          storageclass.kubernetes.io/is-default-class: "true"
      provisioner: ebs.csi.aws.com
      parameters:
        type: gp2
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      allowVolumeExpansion: true
      

4. 重新部署EBS CSI驱动

完成上述配置后,重启CSI控制器以加载新权限:

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

随后删除并重建测试PVC,验证卷是否能正常绑定。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:50:28