kubectl:错误:您必须登录到服务器(未经授权)

我创建了kops集群,并在登录集群时出现以下错误。

错误日志:

*****INFO! KUBECONFIG env var set to /home/user/scripts/kube/kubeconfig.yaml
INFO! Testing kubectl connection....
error: You must be logged in to the server (Unauthorized)
ERROR! Test Failed,AWS role might not be recongized by cluster*****

使用脚本进行iam身份验证,并在连接之前以适当的角色登录到服务器。 我可以登录到同一环境中的其他服务器。尝试使用diff k8s版本和diff配置。

KUBECONFIG没问题,并且条目和令牌详细信息与其他集群相同。 我可以使用“ aws-iam-authenticator”命令查看令牌

浏览了大部分文章,但没有帮助

myxiaoyun2007 回答:kubectl:错误:您必须登录到服务器(未经授权)

这似乎是AWS授权问题。创建群集时,只有created the cluster has admin rights on it的IAM用户,因此您可能需要首先添加自己的IAM用户。

1-首先,验证所有命令中隐式使用的IAM用户身份:aws sts get-caller-identity

如果was-cli设置正确,您将获得类似以下的输出:

{
    "UserId": "ABCDEFGHIJK","Account": "12344455555","Arn": "arn:aws:iam::1234577777:user/Toto"
}

我们将在第3步中将Account中的值称为YOUR_AWS_ACCOUNT_ID(在此示例中为YOUR_AWS_ACCOUNT_ID="12344455555"

2-获得此身份后,您必须将其添加到AWS role binding to get EKS permissions

3-您将需要编辑kubectl使用的ConfigMap文件来添加用户kubectl edit -n kube-system configmap/aws-auth 在打开的编辑器中,使用集群YOUR_USER_NAME创建一个您要用来引用自己的用户名(为简单起见,您可以使用与aws用户名相同的名称,例如步骤2中的Toto),您将在第4步中使用它,并使用aws帐户ID(请不要忘记保留引号“”),您在第1步YOUR_AWS_ACCOUNT_ID的身份信息中找到了它,如下{{1}部分}和mapUsers

mapAccounts

4-最后,您需要在kubernetes集群上为ConfigMap中指定的用户创建角色绑定

  mapUsers: |
    - userarn: arn:aws:iam::111122223333:user/ops-user
      username: YOUR_USER_NAME
      groups:
        - system:masters
  mapAccounts: |
    - "YOUR_AWS_ACCOUNT_ID"
,

使用 kops vs1.19 您需要添加 --admin--user 来更新您的 kubernetes 集群,并且每次您退出服务器时您都必须导出集群名称和存储桶,然后再次更新集群。这会奏效。

本文链接:https://www.f2er.com/2683839.html

大家都在问