加载命名空间时出错。未授权:验证您是否有权访问 Kubernetes 集群

Error loading Namespaces. Unauthorized: Verify you have access to the Kubernetes cluster

我已经使用命令行 eksctl 创建了一个 EKS 集群,并验证了该应用程序运行正常。

但注意到一个奇怪的问题,当我尝试在网络浏览器中访问集群中的节点时,我看到以下错误

Error loading Namespaces
Unauthorized: Verify you have access to the Kubernetes cluster

我可以使用 kubectl get nodes

查看节点

我以管理员用户身份登录。任何关于如何解决这个问题的帮助都会非常有用。谢谢

Amazon 最近 (2020.12) 添加了新功能,允许您从 Aws 控制台浏览 inside 集群中的工作负载。

如果您错过权限,您将收到该错误消息。 这里描述了需要什么权限 https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html#policy_example3

您需要将 IAM role/user 添加到集群的 aws-auth 配置映射

要遵循的基本步骤取自 https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html

kubectl edit -n kube-system configmap/aws-auth
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  mapRoles: |
    - rolearn: <arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF>
      username: <system:node:{{EC2PrivateDNSName}}>
      groups:
        - <system:bootstrappers>
        - <system:nodes>
  mapUsers: |
    - userarn: <arn:aws:iam::111122223333:user/admin>
      username: <admin>
      groups:
        - <system:masters>
    - userarn: <arn:aws:iam::111122223333:user/ops-user>
      username: <ops-user>
      groups:
        - <system:masters>

也看到了这个错误,它是由 EKS 的最新添加引入的,请参阅 https://aws.amazon.com/blogs/containers/introducing-the-new-amazon-eks-console/

从那时起,控制台代表您登录的用户或角色向 EKS 发出请求。

因此请确保 kube-system:aws-auth configmap 添加了该用户或角色。

这个 user/role 可能与您在本地使用 AWS CLI 时使用的不一样,因此 kubectl 可能会在您仍然看到该错误的情况下工作!

这也可能是因为您使用与当前登录到 AWS 管理控制台的用户不同的 IAM 用户创建了 AWS EKS 集群,因此当前登录到 AWS 管理控制台的 IAM 用户无权查看AWS EKS 集群上的命名空间。

尝试使用创建 AWS EKS 集群的用户的 IAM 用户凭证登录 AWS 管理控制台,问题应该已解决。