我遇到了同样的错误。
我通过 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/credentials
1)我用用户的访问密钥在我的本地文件中配置了默认用户
$ 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"
这为我解决了这个问题。