EKS部署Cluster Autoscaler报NoCredentialProviders无法发现ASG问题求助
你遇到的报错本质是Cluster Autoscaler Pod无法获取到有权限的AWS凭证,由于你不使用IAM OIDC方案,凭证需要从Pod运行所在Worker Node的IAM角色获取,可按以下优先级排查遗漏配置:
修复方案
- 补充AWS区域环境变量
这是该场景下最高发的遗漏项。Cluster Autoscaler默认没有内置区域配置,无法正常加载节点IAM角色的凭证链,你需要在CA的Deployment配置的spec.template.spec.containers[0].env字段下新增区域配置:
- name: AWS_REGION value: ap-south-1
修改后重新应用Deployment即可。
- 调整EC2实例元数据服务(IMDS)跳数
如果你的Worker Node启用了IMDSv2,默认HTTP响应跳数为1,容器内进程无法访问元数据服务获取节点IAM角色凭证,需要将ASG启动模板中实例元数据的跳数调整为2。你可以直接批量修改对应ASG下现有实例的配置:
aws ec2 modify-instance-metadata-options \ --instance-id <你的Worker Node实例ID> \ --http-put-response-hop-limit 2 \ --http-endpoint enabled
也可以直接更新ASG的启动模板配置,避免后续新扩容的节点再出现该问题。
确保Pod调度到有权限的节点
如果你集群内存在多组绑定不同IAM角色的Worker Node,若CA Pod被调度到未绑定CA权限策略的节点上,就会出现凭证缺失报错。你可以给CA的Deployment添加nodeSelector/节点亲和性规则,强制调度到绑定了权限的节点组,或者给所有Worker Node的IAM角色统一绑定CA所需的权限策略。校验Worker Node IAM角色信任策略
确认你绑定了CA权限的IAM角色的信任策略中,允许EC2服务扮演该角色,信任策略需包含以下规则:
{ "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }
内容的提问来源于stack exchange,提问作者Yogesh Jilhawar
相关产品推荐
相关产品推荐

