gpt4 book ai didi

kubernetes - 总是收到错误 : You must be logged in to the server (Unauthorized) EKS

转载 作者:行者123 更新时间:2023-12-02 11:28:55 27 4
gpt4 key购买 nike

我目前正在玩 AWS EKS
但我总是得到 error: You must be logged in to the server (Unauthorized)尝试运行时 kubectl cluster-info命令。

我已经阅读了很多 AWS 文档,并查看了许多面临相同问题的类似问题。不幸的是,它们都不能解决我的问题。

所以,这就是我所做的

  • 安装所有必需的软件包
  • 创建用户以访问 aws-cli 名称 crop-portal
  • 为 EKS 名称 crop-cluster 创建角色
  • 通过 AWS 控制台创建 EKS 集群,角色为 crop-cluster姓名 crop-cluster (集群和角色同名)
  • 为用户 crop-portal 运行 AWS 配置
  • 运行 aws eks update-kubeconfig --name crop-cluster更新 kube 配置
  • 运行 aws sts assume-role --role-arn crop-cluster-arn --role-session-name eks-access
  • 将 accessKey、secreyKey 和 sessionToken 相应地复制到环境变量 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_SESSION_TOKEN
  • 运行 aws sts get-caller-indentity现在结果表明它已经使用了假设角色
  • {
    "UserId": "AROAXWZGX5HOBZPVGAUKC:botocore-session-1572604810",
    "Account": "529972849116",
    "Arn": "arn:aws:sts::529972849116:assumed-role/crop-cluster/botocore-session-1572604810"
    }
  • 运行 kubectl cluster并且总是 get error: You must be logged in to the server (Unauthorized)

  • 当我运行 aws-iam-authenticator token -i crop-cluster ,它给了我 token 和
    当我运行 aws-iam-authenticator verify -t token -i crop-portal ,也通过了
    &{ARN:arn:aws:sts::529972849116:assumed-role/crop-cluster/1572605554603576170 CanonicalARN:arn:aws:iam::529972849116:role/crop-cluster AccountID:529972849116 UserID:AROAXWZGX5HOBZPVGAUKC SessionName:1572605554603576170}
    我不知道什么是错的或我想念什么。我非常努力地让它工作,但我真的不知道在这之后该怎么做。
    有人建议使用 awscli 而不是 GUI 创建集群。我尝试了这两种方法,但都没有奏效。使用 awscli 或 GUI 创建对我来说都是一样的。

    请有人帮忙:(

    最佳答案

    我将尝试在此处添加更多信息,希望在设置对 EKS 集群的访问时会有所帮助。

    当我们通过 CloudFormation/CLI/EKSCTL 以任何方法创建 EKS 集群时,创建集群的 IAM 角色/用户将自动绑定(bind)到默认的 kubernetes RBAC API 组“system:masters”(https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles),并以这种方式创建集群将获得对集群的管理员访问权限。

    要验证 EKS 集群的角色或用户,我们可以在 cloudtrail 上搜索 CreateCluster Api 调用,它会告诉我们集群的创建者。

    现在通常如果我们像您一样使用角色创建集群(例如“crop-cluster”)。在使用 kubectl 进行任何 api 调用之前,我们必须确保我们承担了这个角色,最简单的方法是在 kubeconfig 文件中设置这个角色。我们可以通过从终端运行以下命令轻松地做到这一点。

    aws eks --region region-code update-kubeconfig --name cluster_name --role-arn crop-cluster-arn

    现在,如果我们将运行上述命令,那么它将在 kube 配置文件中使用 -r 标志设置角色,因此我们告诉 aws/aws-iam-authenticator 在进行任何 api 调用之前它应该首先承担角色通过这种方式,我们不必使用“aws sts assume-role --role-arn crop-cluster-arn --role-session-name eks-access”通过 cli 手动承担角色。

    正确设置 kubeconfig 文件后,请确保使用 IAM 用户凭证“crop-portal”正确配置 CLI。我们可以通过运行 "aws sts get-caller-identity" 来确认这一点。命令和输出应在“Arn”部分向我们显示用户 ARN,如下所示。
       $ aws sts get-caller-identity
    {
    "Account": "xxxxxxxxxxxxx",
    "UserId": "xxxxxxxxxxxxxx",
    "Arn": "arn:aws:iam::xxxxxxxxxxx:user/crop-portal"
    }

    完成后,您应该可以直接制作 kubectl 命令而不会出现任何问题。

    注意:我假设用户“crop-portal”确实有足够的权限来承担角色“crop-cluster”

    笔记:
    更多细节我们也可以引用这个问题的答案 Getting error "An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied" after setting up EKS cluster

    关于kubernetes - 总是收到错误 : You must be logged in to the server (Unauthorized) EKS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58658615/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com