升级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提供商:
若无输出,说明该集群的OIDC提供商未创建,手动执行创建命令:aws iam list-open-id-connect-providers | grep $ISSUER_ID
注:上述指纹为AWS 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"
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存储类的详细配置:
如果provisioner被错误修改为kubectl get storageclass gp2 -o yamlebs.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
相关产品推荐
相关产品推荐

