14

我在 AWS 上设置 EKS 非常困难。我遵循了本教程:https ://docs.aws.amazon.com/eks/latest/userguide/getting-started.html#eks-launch-workers

我找到了~/.kube/config文件,当我尝试运行时,系统会kubectl get svc提示我以下内容。

▶ kubectl get svc
Please enter Username: Alex
Please enter Password: ********
Error from server (Forbidden): services is forbidden: User 
"system:anonymous" cannot list services in the namespace "default"

我不确定在哪里可以找到此条目的用户名和密码。请指出我可以找到此信息的确切位置。

我认为这也与 EKS RBAC 有关。我不知道如何在没有访问服务器的情况下解决这个问题。

4

5 回答 5

13

如果您的user配置在您的kubeconfig.kubectl

于 2018-08-15T02:23:04.973 回答
9

我遇到了同样的错误。

我通过 aws 控制台创建了 EKS 集群,但是当我按照文档中的步骤配置我的 kubeconfig 时,我得到了同样的错误:

$ kubectl get svc
Please enter Username: JessicaG
Please enter Password: ****************
Error from server (Forbidden): services is forbidden: User "system:anonymous" cannot list services in the namespace "default"

这最终成为我的问题:

在“步骤 1:创建您的 Amazon EKS 集群:使用控制台创建集群”部分的AWS 入门指南中,它说:

“对于此步骤,您必须使用 IAM 用户凭证,而不是根凭证。如果您使用根凭证创建 Amazon EKS 集群,则无法对集群进行身份验证。”

事实证明,我已经使用我的 root 凭据创建了 EKS 集群,但是我正在尝试使用我的 admin user 进行身份验证JessicaG

我的解决方案:

我使用管理员 IAM 用户重新创建了集群JessicaG。为此,我采取了以下步骤:

~/.aws/credentials1)我用用户的访问密钥在我的本地文件中配置了默认用户

$ cat ~/.aws/credentials
[default]
aws_access_key_id = <JessicaG access key>
aws_secret_access_key = <JessicaG secret key>

2)从命令行创建了一个eks集群:

aws eks create-cluster --name eksdemo --role-arn <eksRole> --resources-vpc-config subnetIds=<subnets>,securityGroupIds=<securityGrps>

3)配置kubeconfig:

apiVersion: v1
clusters:
- cluster:
    server: REDACTED
    certificate-authority-data: REDACTED
  name: eksdemo
contexts:
- context:
    cluster: eksdemo
    user: aws-jessicag
  name: eksdemo
current-context: eksdemo
kind: Config
preferences: {}
users:
- name: aws-jessicag
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: heptio-authenticator-aws
      args:
        - "token"
        - "-i"
        - "eksdemo"

这为我解决了这个问题。

于 2018-07-16T01:15:54.867 回答
0

确保您有稳定版本的 kubectl install

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

此外,如果您收到拒绝访问错误,请确保您使用与用于创建 EKS 集群的 kubectl 相同的 IAM 用户访问权限。

When an Amazon EKS cluster is created, the IAM entity (user or role) that creates the 
cluster is added to the Kubernetes RBAC authorization table as the administrator 
(with system:master permissions. Initially, only that IAM user can make calls to the 
Kubernetes API server using kubectl.
If you use the console to create the cluster, you must ensure that the same IAM user 
credentials are in the AWS SDK credential chain when you are running kubectl commands 
on your cluster.
于 2019-05-09T23:30:13.420 回答
0

升级 kubectl 版本,为我解决了这个问题。

于 2021-03-08T10:54:12.553 回答
0

就我而言,问题出在 kubectl ...

请确保您安装了 kubectl 的稳定版本。

使用 EKS.. 确保您生成了 kubeconfig。如果需要,请按照文档生成kubeconfig 以及 eks iam身份验证器。

于 2021-06-02T09:05:59.180 回答