问题描述

当获取了 EKS kubeconfig 后,使用该 kubeconfig 提示如下报错

bash
1
2
$ kubectl get pod --kubeconfig kubeconfig 
error: You must be logged in to the server (Unauthorized)

但该 IAM 用户已经存在了管理员权限了

问题原因

该文章有对这个问题进行描述

quote

您不是集群创建者

如果您的 IAM 实体未用于创建集群,说明您不是集群创建者。在这种情况下,请完成以下步骤,将您的 IAM 实体映射到 aws-auth ConfigMap 以允许访问集群 [1]

这里检查和文章描述一致, 但还是这样的问题

bash
1
2
3
4
5
6
$ aws sts get-caller-identity
{
    "UserId": "AIDAXxxxxxxxIIWKMR22Q",
    "Account": "55555555496",
    "Arn": "arn:aws:iam::55555555496:user/eks-user"
}
quote
这是因为,必须将该用户作为集群的 Access 进行关联,而不是授权 “EKS*” 相关权限

image-20250608142943893

图 - 集群用户

选择已经存在的 IAM 用户

image-20250608143226905

图 - 选择IAM用户

选择一个权限,这里选择了 “AmazonEKSAdminPolicy”

image-20250608143341381

图 - 分配权限

最后点击创建

image-20250608143455649

图 - 用户与集群关联创建

最后根据提示检查 IAM 用户对集群的权限即可

bash
1
2
$ kubectl get pod --kubeconfig kubeconfig 
Error from server (Forbidden): pods is forbidden: User "arn:aws:iam::555555555556:user/eks-user" cannot list resource "pods" in API group "" in the namespace "default"

遇到问题:“Error from server (Forbidden): pods is forbidden: User “arn:aws:iam::555555555556:user/eks-user” cannot list resource “pods” in API group "" in the namespace “default””。这是因为 IAM 用户也需要对应的权限。

image-20250608143654804

图 - IAM用户权限关联

总结:

  • IAM 用户必须和 EKS 集群关联。
  • IAM 用户必须授权 EKS 相关权限。

Reference

[1] 当我连接到 Amazon EKS API 服务器时,如何解决错误“您必须登录到服务器(未授权)”?