我已经创建了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 身份验证,并在连接之前以正确的角色登录到服务器。 我可以登录到同一环境中的其他服务器。尝试使用差异 K8s 版本和差异配置。
KUBECONFIG 没有任何问题,并且与其他集群一样具有相同的条目和令牌详细信息。 我可以看到带有"aws-iam-authenticator"命令的令牌
浏览了大部分文章,没有帮助
使用 kops vs1.19 时,您需要添加--admin
或--user
来更新您的 Kubernetes 集群,每次注销服务器时,您都必须导出集群名称和存储桶,然后再次更新集群。 这将起作用。
这似乎是 AWS 授权问题。在创建集群时,只有创建集群的 IAM 用户对其具有管理员权限,因此您可能需要先添加自己的 IAM 用户。
1-首先验证所有命令中隐式使用的IAM用户身份:aws sts get-caller-identity
如果您的 aws-cli 设置正确,您将获得类似于以下内容的输出:
{
"UserId": "ABCDEFGHIJK",
"Account": "12344455555",
"Arn": "arn:aws:iam::1234577777:user/Toto"
}
我们将Account
中的值称为步骤 3 中的YOUR_AWS_ACCOUNT_ID
。(在此示例中YOUR_AWS_ACCOUNT_ID="12344455555"
2-拥有此身份后,必须将其添加到 AWS 角色绑定以获取 EKS 权限。
3-您需要编辑kubectl使用的ConfigMap文件以添加您的用户kubectl edit -n kube-system configmap/aws-auth
在打开的编辑器中,创建一个要用于使用集群YOUR_USER_NAME
引用自己的用户名(为简单起见,您可以使用与您的 AWS 用户名相同的用户名,示例Toto
在步骤 2 中(,您将在步骤 4 中需要它,并使用 AWS 账户 ID(不要忘记保留引号 "(,您在步骤 1YOUR_AWS_ACCOUNT_ID
的标识信息中找到了它,如下第mapUsers
和mapAccounts
节。
mapUsers: |
- userarn: arn:aws:iam::111122223333:user/ops-user
username: YOUR_USER_NAME
groups:
- system:masters
mapAccounts: |
- "YOUR_AWS_ACCOUNT_ID"
4-最后,您需要在 kubernetes 集群上为 ConfigMap 中指定的用户创建一个角色绑定
kubectl create clusterrolebinding cluster-admin-binding
--clusterrole cluster-admin
--user YOUR_USER_NAME