运行任何
kubectl
命令时出现错误。
$ kubectl version
Client Version: v1.29.1
error: You must be logged in to the server (the server has asked for the client to provide credentials)
我已运行以下命令来配置 EKS 集群。
我正在使用 aws cli 版本
aws-cli/2.17.51
。
$ aws eks --region <region> update-kubeconfig --name <my-cluster-name>
命令确实运行成功,我可以看到 kubectl 配置文件中的配置已更新。
我有一个创建了 EKS 集群的 AWS 根用户,并且我正在使用 IAM 用户访问该集群。 IAM 用户拥有访问此集群所需的所有权限和角色。
此外,集群为此 IAM 用户配置了
IAM access entries
作为 AmazonEKSAdminPolicy
。
我已使用
aws configure
在 aws 命令行中配置 IAM 用户的密钥。我确实遵循了多种解决方案来修复此错误,但没有用。
Kubectl 询问:错误:您必须登录到服务器(服务器已要求客户端提供凭据)
对于 EKS,您还需要将用户添加到 kube-system 命名空间中的
aws-auth
ConfigMap。
kubectl edit configmap aws-auth -n kube-system
然后在
mapUsers
下添加:
mapUsers: |-
- groups:
- system:masters
userarn: arn:aws:iam::<acc>:user/<username>
username: <username>
所以像这样:
apiVersion: v1
data:
mapRoles: |
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::<acc>:role/eks-nodegroup-role
username: system:node:{{EC2PrivateDNSName}}
mapUsers: |-
- groups:
- system:masters
userarn: arn:aws:iam::<acc>:user/<username>
username: <username>