配置OIDC与IAM角色后,EKS Pod无法连接STS端点的排查方法
排查EKS Pod执行
aws s3 ls时STS端点连接失败的问题 1. 验证Pod网络连通性
- 在Pod内执行域名解析测试:
nslookup sts.ap-south-1.amazonaws.com,确认能解析到有效IP - 若解析失败,检查Pod的DNS配置:
cat /etc/resolv.conf,确认nameserver指向CoreDNS服务IP - 直接测试STS端点的HTTPS连通性:
curl -v https://sts.ap-south-1.amazonaws.com/,查看是否能建立TCP连接并收到响应
2. 检查VPC与安全组配置
- 确认EKS集群子网类型:若为私有子网,需确保配置了NAT网关,保证Pod能访问公网服务
- 检查节点安全组:允许出站HTTPS(443端口)流量到AWS STS服务的对应区域IP段
- 验证VPC网络ACL:确保出站规则允许443端口的流量,入站规则允许STS服务的响应流量
3. 确认IRSA绑定正确性
- 检查服务账号的IAM角色关联:
kubectl describe serviceaccount aws-test -n default,查看是否存在eks.amazonaws.com/role-arn注解,且注解值与目标IAM角色ARN完全一致 - 核对IAM角色信任关系:确认OIDC提供商ARN、
sub字段(system:serviceaccount:default:aws-test)、aud字段(sts.amazonaws.com)均无拼写错误,OIDC提供商URL与集群实际OIDC地址完全匹配
4. 排查AWS凭证优先级问题
- 检查Pod内是否存在手动配置的AWS凭证:查看
~/.aws/credentials文件,或检查环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY,这类凭证会优先于IRSA自动获取的角色凭证 - 确认IRSA环境变量存在:执行
printenv | grep AWS_,查看是否有AWS_WEB_IDENTITY_TOKEN_FILE和AWS_ROLE_ARN两个变量,这是IRSA正常工作的必要条件
5. 验证AWS区域与端点配置
- 检查Pod内默认AWS区域:
aws configure get region,确保输出为ap-south-1,若不符,设置环境变量export AWS_DEFAULT_REGION=ap-south-1 - 直接测试STS服务调用:
aws sts get-caller-identity,若仍报错,说明STS端点连接存在根本性网络问题,需回到网络层面排查
内容的提问来源于stack exchange,提问作者zilcuanu
相关产品推荐
相关产品推荐

