スタートガイド に従って最初のKubernetes EKSクラスターをセットアップしていますが、kubectl get svc
でアクセスを確認する手順を通過できません。私が得ているサービスのリストの代わりに:
error: the server doesn't have a resource type "svc"
aws-iam-authenticator
を用意しました。AWS管理者権限を持つユーザーの正しいアクセスと秘密鍵を取得しました。考えられるすべてのものを確認しましたが、エラーの原因を特定できません。
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ユーザーがクラスターを管理するためにそれを前提とすることを要求します。
それが役に立てば幸い:)