我正在按照以下说明设置我的第一个 Kubernetes EKS 集群入门指南但我无法通过验证访问权限的步骤kubectl get svc
。我得到的不是服务列表:
error: the server doesn't have a resource type "svc"
我已经准备好了aws-iam-authenticator
,我已经获得了具有 AWS 管理员权限的用户的正确访问权限和密钥,我检查了所有我能想到的内容,但仍然无法找出导致错误的原因。
答案1
确保kubectl
使用完全相同的 IAM 用户/角色您用来创建 EKS 集群的那IAM 用户/角色system:masters
在 Kubernetes 中被赋予权限。如果您使用其他角色,则会看到此错误,即使该其他角色在其 IAM 策略中具有管理员权限。
例如,如果您在使用以下方式登录时创建了 EKS 集群跨账户 IAM 角色现在你正试图将它与不同的 IAM 用户它不起作用。
您可以稍后向 EKS 添加更多 IAM 用户,但首先您必须使用创建集群的 IAM 角色。例如,如果您登录到某个公司登录帐户和转换角色到公司产品具有角色的帐户行政您必须进行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如下所述:如何在 aws-cli 中“切换角色”?在这种情况下,您将不需要-r arn:...:role/Admin
in ,kubeconfig
因为它已经在 中完成~/.aws/credentials
。
一旦角色内容固定,您就应该能够运行kubectl get svc
。
一旦上述工作完成,你就可以向 EKS / Kubernetes 添加更多 IAM 用户和 IAM 角色。我建议您创建一个专用角色,例如,EKSAdmin
并要求您的 IAM 用户承担该角色以管理集群。
希望有帮助:)