无法在 AWS EKS 中列出服务

Kee*_*ing 4 containers amazon-web-services kubernetes

我正在按照入门指南设置我的第一个 Kubernetes EKS 集群,但我无法通过验证访问的步骤kubectl get svc。而不是我得到的服务列表:

error: the server doesn't have a resource type "svc"
Run Code Online (Sandbox Code Playgroud)

我已经准备好了aws-iam-authenticator,我已经为具有 AWS 管理员权限的用户获得了正确的访问权限和密钥,我检查了我能想到的所有内容,但无法找出导致错误的原因。

MLu*_*MLu 6

确保使用kubectl与创建 EKS 集群完全相同的 IAM 用户/角色?在 Kubernetes 中,只有IAM 用户/角色被授予system:masters特权。如果您使用其他角色,您将看到此错误,即使该其他角色在其 IAM 策略中具有管理员权限。


例如,如果您在使用跨账户 IAM 角色登录时创建了 EKS 集群,而现在您尝试将其与不同的 IAM 用户一起使用,它将无法工作。

您可以稍后向 EKS 添加更多 IAM 用户,但首先您必须使用创建集群的 IAM 角色。例如,如果您登录某个company-login帐户并将角色切换到具有角色Admin 的company-prod帐户,则必须相应地更新: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
Run Code Online (Sandbox Code Playgroud)

或者,您可以按照此处所述为aws-cli创建跨账户配置文件如何在 aws-cli 中“切换角色”?在这种情况下,您将不需要in,因为它已经在.-r arn:...:role/Adminkubeconfig~/.aws/credentials

一旦角色的东西被修复,你应该能够运行kubectl get svc.


上述工作完成后,您可以向 EKS/Kubernetes 添加更多 IAM 用户和 IAM 角色。我建议您创建一个专用角色,例如,EKSAdmin并要求您的 IAM 用户承担该角色以管理集群。

希望有帮助:)