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にも関係していると思います。サーバーにアクセスせずにこれを回避する方法がわかりません。
この問題は、user
構成がkubeconfig
で機能していない場合、またはv1.10未満のkubectl
のバージョンを使用している場合に発生します。
同じエラーが発生しました。
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"
これは結局私の問題でした:
AWS入門ガイド 「ステップ1:Amazon EKSクラスターを作成する:コンソールでクラスターを作成するには」では、次のように記載されています。
"この手順では、ルート認証情報ではなくIAMユーザー認証情報を使用する必要があります。ルート認証情報を使用してAmazon EKSクラスターを作成する場合、クラスターに対して認証できません。"
ルート認証情報を使用してEKSクラスターを作成したことがわかりましたが、管理ユーザーJessicaG
を使用して認証しようとしました。
私の解決策:
管理IAMユーザーJessicaG
を使用してクラスターを再作成しました。これを行うには、ここに私が取った手順があります:
1)ローカルファイルにデフォルトユーザーを設定しました~/.aws/credentials
ユーザーのアクセスキー
$ 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"
それでこの問題は解決しました。
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クラスターの作成に使用したものと同じIAMユーザーアクセスをkubectlに使用していることを確認してください。
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.