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

如何使用AWS API查询EKS集群的pods和nodes并解决AssumeRole访问报错

通过AWS相关接口获取EKS节点与Pod信息的方法
  • 前置准备:你持有的ServiceAccount(SA)凭证一般包含ca.crt、token两个核心文件,首先需要先获取EKS集群的API Server端点,可通过调用AWS EKS服务的DescribeCluster接口获取,也可直接通过AWS CLI执行命令aws eks describe-cluster --name <你的集群名> --query "cluster.endpoint" --output text得到。
    注意:你使用的ServiceAccount需要提前绑定对应集群角色(ClusterRole)或命名空间角色(Role),要有nodes、pods资源的get、list权限,否则调用API会返回权限拒绝错误
  • 调用Kubernetes原生API获取集群内资源(节点、Pod):EKS本身兼容K8s原生API,资源数据都存储在集群APIServer中,直接用SA凭证调用即可:
    1. 获取节点列表:请求GET https://<你的EKS APIServer地址>/api/v1/nodes,请求头添加Authorization: Bearer <SA的token内容>,同时信任SA凭证中的ca.crt文件即可,curl调用示例:
      curl --cacert ./ca.crt -H "Authorization: Bearer <替换为你的SA token>" https://<eks-apiserver-endpoint>/api/v1/nodes
    2. 获取Pod列表:请求GET https://<你的EKS APIServer地址>/api/v1/pods,如果需要指定命名空间,路径改为/api/v1/namespaces/<命名空间名>/pods即可,curl调用示例:
      curl --cacert ./ca.crt -H "Authorization: Bearer <替换为你的SA token>" https://<eks-apiserver-endpoint>/api/v1/pods
  • 若需获取AWS资源层面的节点信息(对应EC2实例属性),可调用AWS EC2的DescribeInstances接口,筛选携带标签eks:cluster-name=<你的集群名>、eks:nodegroup-name=<你的节点组名>的EC2实例即可,不需要用到K8s SA凭证,用你当前的AWS访问密钥调用即可。
kubectl AssumeRole AccessDenied报错解决方案

你执行kubectl get pods的报错信息如下:

调用AssumeRole操作时发生(AccessDenied)错误:用户:arn:aws:iam:xxxx:user/xx 无权对资源arn:aws:iam::xx:user/xx执行sts:AssumeRole操作

该报错是因为当前使用的IAM用户没有权限Assume你kubeconfig中配置的、绑定了EKS访问权限的IAM角色,按以下步骤修复即可:

  1. 检查kubeconfig配置:执行cat ~/.kube/config,找到对应EKS集群的user配置,确认args字段里的--role-arn参数是不是你要使用的角色ARN,是否存在账号ID、角色名拼写错误。
  2. 给当前IAM用户添加AssumeRole权限:在IAM控制台找到报错里的IAM用户arn:aws:iam:xxxx:user/xx,给它附加包含以下内容的权限策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "<替换为你要Assume的IAM角色ARN>"
        }
    ]
}
  1. 检查目标IAM角色的信任策略:找到你要Assume的IAM角色,确认它的信任策略里允许你的IAM用户调用AssumeRole,参考配置如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam:xxxx:user/xx"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  1. 验证配置:修改完成后等待1~2分钟权限生效,重新执行kubectl get pods测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:27:03