web-dev-qa-db-ja.com

AWS EKSでサービスを一覧表示できない

スタートガイド に従って最初のKubernetes EKSクラスターをセットアップしていますが、kubectl get svcでアクセスを確認する手順を通過できません。私が得ているサービスのリストの代わりに:

error: the server doesn't have a resource type "svc"

aws-iam-authenticatorを用意しました。AWS管理者権限を持つユーザーの正しいアクセスと秘密鍵を取得しました。考えられるすべてのものを確認しましたが、エラーの原因を特定できません。

4
KeepLearning

EKSクラスターの作成に使用したまったく同じIAMユーザー/ロールkubectlを使用していることを確認してください。 thatIAMユーザー/ロールのみに、Kubernetesで_system:masters_特権が付与されます。別の役割を使用している場合、その他の役割がIAMポリシーで管理者権限を持っている場合でも、このエラーが表示されます。


たとえば、ログイン中にクロスアカウントIAMロールでEKSクラスターを作成し、それを異なるIAMユーザーで使用しようとしている場合動作しません。

後でEKSにさらにIAMユーザーを追加できますが、最初にクラスターを作成したIAMロールを使用する必要があります。たとえば、company-loginアカウントにログインし、switch roletocompany-prod ロールAdminを持つアカウントは、それに応じてkubeconfigを更新する必要があります。

_users:
- name: arn:aws:eks:ap-southeast-2:{company-prod-id}:cluster/{cluster-name}
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
      - token
      - -i
      - cluster-name
      - -r                                          <<< Add this
      - arn:aws:iam::{company-prod-id}:role/Admin   <<< And this
      env:
      - name: AWS_PROFILE
        value: company-login-profile                <<< Must be your login account
_

または、ここで説明するようにaws-cliクロスアカウントプロファイルを作成できます。「役割を切り替える」方法in aws-cli?その場合、_-r arn:...:role/Admin_ですでに実行されているため、kubeconfigに_~/.aws/credentials_は必要ありません。

ロールが修正されると、_kubectl get svc_を実行できるようになります。


上記が機能したら、 IAMユーザーとIAMロールをEKS/Kubernetesに追加する を実行できます。たとえば、専用の役割を作成することをお勧めします。 EKSAdminを使用し、IAMユーザーがクラスターを管理するためにそれを前提とすることを要求します。

それが役に立てば幸い:)

6
MLu