Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services kubectl错误您必须登录到服务器(未经授权)-EKS群集_Amazon Web Services_Kubernetes_Kubectl_Amazon Eks - Fatal编程技术网

Amazon web services kubectl错误您必须登录到服务器(未经授权)-EKS群集

Amazon web services kubectl错误您必须登录到服务器(未经授权)-EKS群集,amazon-web-services,kubernetes,kubectl,amazon-eks,Amazon Web Services,Kubernetes,Kubectl,Amazon Eks,我是EKS和Kubernetes的新手- 下面是发生的事情 创建了具有特定IAM角色的EKS群集 当尝试使用kubectl命令连接到集群时,它正在抛出 错误您必须登录到服务器(未经授权) 我遵循了这里详述的步骤 担任创建EKS群集的角色 将它们导出到aws凭据中的新配置文件dev RanAWS\u PROFILE=dev kubectl get nodes。它能够列出我的所有节点 注意:我已经运行了aws eks--region update kubeconfig--name 现在,我尝试添加

我是EKS和Kubernetes的新手-

下面是发生的事情

  • 创建了具有特定IAM角色的EKS群集
  • 当尝试使用kubectl命令连接到集群时,它正在抛出
  • 错误您必须登录到服务器(未经授权)

    我遵循了这里详述的步骤

  • 担任创建EKS群集的角色

  • 将它们导出到aws凭据中的新配置文件
    dev

  • Ran
    AWS\u PROFILE=dev kubectl get nodes
    。它能够列出我的所有节点

  • 注意:我已经运行了aws eks--region update kubeconfig--name

  • 现在,我尝试添加角色/SAML用户,该用户正试图通过应用下面的configmap来访问EKS集群,并运行
    AWS\u PROFILE=dev kubectl apply-f AWS auth.yaml
  • aws认证yaml

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: aws-auth
      namespace: kube-system
    data:
      mapRoles: |
        - rolearn: arn:aws:sts::******:assumed-role/aws_dev/abc@def.com
          username: system:node:{{EC2PrivateDNSName}}
          groups:
            - system:bootstrappers
            - system:nodes
    
    请注意,角色arn是一个SAML用户,被假定为尝试连接到集群的
    aws\u dev
    角色

    应用此选项后,响应为
    configmap/aws auth configured

    我现在尝试在没有AWS_PROFILE=dev的情况下执行
    kubectl get nodes
    ,但再次失败,出现
    错误,您必须登录到服务器(未经授权)

    我还执行了以前工作但现在失败的
    AWS\u PROFILE=dev kubectl get nodes

    我猜aws认证信息弄乱了,有没有办法恢复上面所做的
    kubectl apply


    现在任何kubectl命令都会失败。可能会发生什么?如何纠正此问题?

    如果您的AWS身份和访问管理(IAM)实体未经Amazon EKS群集的基于角色的访问控制(RBAC)配置授权,则会出现授权错误。当Amazon EKS群集由与aws IAM authenticator使用的不同的IAM用户或角色创建时,会发生这种情况

    检查分辨率


    重新创建集群,当您进入链接中的步骤6时,向aws-auth.yaml添加第二个角色(或用户),如下所示:

  • 使用
    kubectl获取配置图获取cm-n kube系统aws auth-o yaml
  • 将您的角色作为第二项添加到ConfigMap(不要更改第一项):
  • apiVersion:v1 种类:配置地图 元数据: 名称:aws auth 名称空间:kube系统 数据: 地图角色:| -rolearn:arn:aws:sts:*******:担任角色/aws_-dev/abc@def.com 用户名:系统:节点:{{EC2PrivateDNSName} 组: -系统:引导程序 -系统:节点 ###仅添加此项(假设您正在使用角色) -罗兰: 用户名: 组: -系统:硕士
  • 运行AWS_PROFILE=dev kubectl apply-f AWS auth.yaml
  • 然后使用aws eks--区域更新kubeconfig--名称
  • 您可能更改了aws身份验证配置。
    通常,当您创建集群时,创建该集群的用户(或角色)具有管理员权限,当您切换用户时,您需要将其添加到配置中(作为创建集群的用户完成)

    正如我的问题中所指出的,我确实遵循了链接中的步骤,但仍然面临问题。我列出了我遵循的相同步骤。这里的问题是aws auth config弄乱了集群,我无法运行kubectl。如何还原此内容?aws eks--区域更新kubeconfig--名称再次尝试此操作Ini不想重新创建群集是否有方法还原对配置映射aws auth所做的更改?如果您没有创建群集的用户的访问权限,那么我猜您在更改配置映射时锁定了自己
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: aws-auth
      namespace: kube-system
    data:
      mapRoles: |
        - rolearn: arn:aws:sts::******:assumed-role/aws_dev/abc@def.com
          username: system:node:{{EC2PrivateDNSName}}
          groups:
            - system:bootstrappers
            - system:nodes
        ### Add only this (assuming you're using a role)
        - rolearn: <ARN of your IAM role>
          username: <any name>
          groups:
            - system:masters