私は、EKSの入門ガイドに従うことを試みてきました。 kubectl get serviceを呼び出そうとすると、次のメッセージが表示されました:エラー:サーバーにログインする必要があります(認証されていない)
1。 EKSクラスターを作成しました。
2。次のように構成ファイルを作成しました。
apiVersion: v1
clusters:
- cluster:
server: https://*********.yl4.us-west-2.eks.amazonaws.com
certificate-authority-data: *********
name: *********
contexts:
- context:
cluster: *********
user: aws
name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: heptio-authenticator-aws
args:
- "token"
- "-i"
- "*********"
- "-r"
- "arn:aws:iam::*****:role/******"
Heptio-authenticator-awsトークンを実行するとトークンを取得できます-r arn:aws:iam :: **********:role/********* -i my-cluster -ameただし、クラスターにアクセスしようとすると、エラーが発生し続けます:サーバーにログインする必要があります(無許可)
この問題を解決する方法はありますか?
また、ユーザーがaws-auth k8s ConfigMapにいることを確認します。
https://docs.aws.Amazon.com/eks/latest/userguide/add-user-role.html
AWS cliを介してアクセスするのと同じIAMプロファイルの下にクラスターを作成する必要があります。
別の言い方をすると、~/.aws/credentials
内で、kubectlにアクセスしているプロファイルは、クラスターの作成に使用されたものとまったく同じIAMと一致する必要があります。
GUIからの作成は役立つよりも混乱を招く可能性があるため、AWS cliを使用してクラスターを作成することをお勧めします。 Getting Started ガイドは、起動して実行するための最善の策です。
同じ問題があった。ルートアカウントを使用している可能性があります。ルートアカウントが必要な役割を引き受けることがブロックされているようです。有効期限が切れたキーを使用している場合、このエラーが隠蔽されることがあります。
構成ファイルの最後の2行をコメントアウトしました
# - "-r"
# - "arn:aws:iam::**********:role/**********"
うまくいきましたが、理由はわかりません
これは、EKSとは無関係に、minikubeのローカル環境でも発生します。私の問題はこの問題に関連しています: https://github.com/kubernetes/kubernetes/issues/76774
私が採用した解決策は、kubectlのキャッシュディレクトリを削除することです:rm -rf ~/.kube/{cache,http-cache}
。執筆時点での唯一の回避策だと思います。
この問題をデバッグしました。質問があります。これを企業のWi-Fiネットワークで実行していますか?はいの場合、EC2インスタンスを作成し、kubectl get svc
を実行できるかどうかをテストできますか?
また、このコマンドが機能するかどうか試してくださいkubectl get svc ---insecure-skip-tls-verify