web-dev-qa-db-ja.com

kubectlエラーEKSクラスターにアクセスするときは、サーバー(未承認)にログインする必要があります

私は、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/******"
  1. ダウンロードおよびインストールされた最新のAWS CLI
  2. Ran awsは、IAMユーザーとリージョンの認証情報をus-west-2として構成および設定します
  3. EKSロールのsts:AssumeRoleのポリシーをIAMユーザーに追加し、信頼関係として設定します
  4. 設定ファイルを使用するようにkubectlをセットアップします

Heptio-authenticator-awsトークンを実行するとトークンを取得できます-r arn:aws:iam :: **********:role/********* -i my-cluster -ameただし、クラスターにアクセスしようとすると、エラーが発生し続けます:サーバーにログインする必要があります(無許可)

この問題を解決する方法はありますか?

27
Itay k

また、ユーザーがaws-auth k8s ConfigMapにいることを確認します。

https://docs.aws.Amazon.com/eks/latest/userguide/add-user-role.html

4
juicedM3

AWS cliを介してアクセスするのと同じIAMプロファイルの下にクラスターを作成する必要があります。

別の言い方をすると、~/.aws/credentials内で、kubectlにアクセスしているプロファイルは、クラスターの作成に使用されたものとまったく同じIAMと一致する必要があります。

GUIからの作成は役立つよりも混乱を招く可能性があるため、AWS cliを使用してクラスターを作成することをお勧めします。 Getting Started ガイドは、起動して実行するための最善の策です。

2
Thor

同じ問題があった。ルートアカウントを使用している可能性があります。ルートアカウントが必要な役割を引き受けることがブロックされているようです。有効期限が切れたキーを使用している場合、このエラーが隠蔽されることがあります。

2
Anthony Skipper

構成ファイルの最後の2行をコメントアウトしました

# - "-r"
# - "arn:aws:iam::**********:role/**********"

うまくいきましたが、理由はわかりません

2
Itay k

これは、EKSとは無関係に、minikubeのローカル環境でも発生します。私の問題はこの問題に関連しています: https://github.com/kubernetes/kubernetes/issues/76774

私が採用した解決策は、kubectlのキャッシュディレクトリを削除することです:rm -rf ~/.kube/{cache,http-cache}。執筆時点での唯一の回避策だと思います。

0
lzecca

この問題をデバッグしました。質問があります。これを企業のWi-Fiネットワークで実行していますか?はいの場合、EC2インスタンスを作成し、kubectl get svcを実行できるかどうかをテストできますか?

また、このコマンドが機能するかどうか試してくださいkubectl get svc ---insecure-skip-tls-verify

0
Arun Sethupat