【问题标题】:Inherited EKS Cluster, don't have access to run kubectl commands继承的 EKS 集群,无权运行 kubectl 命令
【发布时间】:2020-08-13 21:06:20
【问题描述】:

我继承了一个 eks 集群,但我不知道将哪个 IAM 用户设置为“主用户”(创建集群的用户始终拥有 system:master 访问权限)。我已使用工作角色尝试读取/修改 aws-auth 配置映射,但工作节点似乎也无权访问它。

sh-4.2$ kubectl get configmap -n kube-system
Error from server (Forbidden): configmaps is forbidden: User "system:node:ip-10-10-10-10.ec2.internal" cannot list resource "configmaps" in API group "" in the namespace "kube-system": No Object name found

在不知道 aws-auth 内容的情况下,我可以在外部执行哪些步骤来再次访问此集群?

【问题讨论】:

    标签: kubernetes permissions kubectl rbac amazon-eks


    【解决方案1】:

    当您首次在 AWS 上创建 Amazon EKS 集群时,创建集群的 IAM 实体用户或角色是唯一有权对其进行身份验证和管理 aws-auth ConfigMap 的身份,它会自动授予 system:masters 权限正如您提到的 [1],集群创建者的集群 RBAC 配置。

    要识别谁是集群创建者,您可以使用 CloudTrail 控制台的“事件历史记录”,您可以按“事件名称”过滤并选择“创建集群”,它会列出用于创建集群的事件,在那里您将能够看到用于创建集群的身份(用户或角色)。

    为了能够进行身份验证,首先您需要安装 aws-iam-authenticator [2],然后在您的 AWS-CLI 上假设集群创建者身份,默认情况下,适用于 Kubernetes 的 AWS IAM Authenticator 将使用相同的身份使用以下命令返回的凭据:

    aws sts 获取调用者身份 最后,您需要使用以下命令创建一个 kubeconfig 文件,以便能够“kubectl get nodes”[3]:

    aws eks --region 区域代码更新-kubeconfig --name cluster_name 您可以在“管理集群身份验证”文档 [4] 中找到有关 AWS EKS 身份验证过程的更多信息。

    如果您需要向集群创建者以外的新用户授予访问权限,则必须通过 ConfigMap 添加角色/用户,该角色/用户使用已在 aws-auth ConfigMap [5] 上授权的身份登录。

    [1]https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html [2]https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html [3]https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html [4]https://docs.aws.amazon.com/eks/latest/userguide/managing-auth.html [5]https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 2016-02-29
      • 2019-04-15
      • 1970-01-01
      • 2021-04-15
      • 2018-11-07
      • 1970-01-01
      • 2019-09-24
      相关资源
      最近更新 更多