用户无法使用kubectl登录到EKS集群 [英] User cannot log into EKS Cluster using kubectl
问题描述
我正在尝试在AWS Elastic Kubernetes Service(EKS)中托管应用程序。我已经使用IAM用户(User1)IAM控制台配置了EKS群集。已配置节点组并将节点添加到EKS群集,一切正常。
为了连接到集群,我启动了一个EC2实例(Centos7)并配置了以下内容:
1.安装了docker、kubeadm、kubelet和kubectl。
2.已安装并配置AWS Cli V2。
我已使用User1的AWS_ACCESS_KEY_ID和AWS_SECRET_KEY_ID从EC2实例中配置AWS Cli,以便使用kubectl连接到群集。
我运行了以下命令,以便以用户1身份连接到群集:
1.AWS STS Get-Call-Identity
2.AWS EKS UPDATE-kubeconfig--name trojanwall--Region AP-South-1
我能够以用户1的身份执行EKS集群中的所有操作。
但是,我现在已经创建了一个名为‘user2’的新用户,并且我已经将当前的AWS_ACCESS_KEY_ID和AWS_SECRET_KEY_ID替换为user2的用户。执行了相同的步骤,当我尝试运行‘kubectl get Pods’时,我收到以下错误:
错误:您必须登录到服务器(未经授权)
作为用户1:
运行kubectl Describe configmap-n kube-system aws-auth后的结果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
您可以根据要授予该用户的权限使用不同的组。
如果您的计算机上还没有配置映射:
- 下载配置映射
curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm.yaml
- 将默认值替换为您的值(角色ARN、用户名、帐户ID...)
- 如上所述添加mapUser部分
- 从终端执行
kubectl apply -f aws-auth-cm.yaml
您也可以按照documentation中的步骤操作(更详细)
这篇关于用户无法使用kubectl登录到EKS集群的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!