繁体   English   中英

用户无法使用 kubectl 登录 EKS 集群

[英]User cannot log into EKS Cluster using kubectl

我正在尝试在AWS Elastic Kubernetes Service(EKS)中托管应用程序。 我已经使用IAM 用户 (user1)使用 AWS 控制台配置了 EKS 集群。 配置节点组并将节点添加到 EKS 集群,一切正常。

为了连接到集群,我启动了一个 EC2 实例(Centos7)并配置了以下内容:

1.安装docker、kubeadm、kubelet和kubectl。
2. 安装并配置 AWS Cli V2。

我使用 user1 的AWS_ACCESS_KEY_IDAWS_SECRET_KEY_ID从 EC2 实例中配置 AWS Cli,以便使用 kubectl 连接到集群。

为了以 user1 身份连接到集群,我运行了以下命令:

1. aws sts 获取调用者身份
2. aws eks update-kubeconfig --name trojanwall --region ap-south-1

我能够以 user1 身份执行 EKS 集群中的每一项操作。

但是,我现在创建了一个名为“ user2 ”的新用户,并将当前的AWS_ACCESS_KEY_IDAWS_SECRET_KEY_ID替换为 user2。 做了相同的步骤,当我尝试运行“ kubectl get pods ”时,我收到以下错误:

在此处输入图像描述

错误:您必须登录到服务器(未经授权)

运行kubectl describe configmap -n kube-system aws-auth as user1 后的结果:

Name:         aws-auth
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Data
====
mapRoles:
----
- groups:
  - system:bootstrappers
  - system:nodes
  rolearn: arn:aws:iam::XXXXXXXXXXXX:role/AWS-EC2-Role
  username: system:node:{{EC2PrivateDNSName}}


BinaryData
====

Events:  <none>

有谁知道如何解决这个问题?

创建 EKS 集群时,只有创建集群的用户才能访问它。 为了允许其他人访问集群,您需要将该用户添加到 aws-auth。 为此,在您的data部分中,添加

mapUsers: |
  - userarn: arn:was:iam::<your-account-id>:user/<your-username>
    username: <your-username>
    groups:
      - systems:masters

您可以根据要授予该用户的权限使用不同的组。

如果您的机器上还没有配置 map:

  1. Download the config map curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm.yaml
  2. 将默认值替换为您的值(角色 arn、用户名、帐户 ID ...)
  3. 如上所述添加 mapUsers 部分
  4. 从终端执行kubectl apply -f aws-auth-cm.yaml

您还可以按照文档中的步骤进行操作(更详细)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM