📌  相关文章
📜  Amazon Web Services – 解决 Amazon EKS API 服务器中的服务器授权错误

📅  最后修改于: 2022-05-13 01:57:46.407000             🧑  作者: Mango

Amazon Web Services – 解决 Amazon EKS API 服务器中的服务器授权错误

在本文中,我们将研究在连接到 Amazon Elastic Kubernetes Service API 服务器时,收到错误的用户必须未经授权登录服务器。

在这里,我们有一个最初由用户创建的 Amazon EKS 集群。只有 Amazon EKS 集群的创建者拥有系统管理员权限,可以通过 Kubectl 命令行访问集群并与之通信。

让我们首先验证我们的 AWS Identity and Access Management 用户。我们可以在终端中配置它。在 AWS 命令行界面中,我们将运行以下命令来显示我们在本地计算机中配置的当前用户,以便使用以下命令:

$ aws sts get-caller-identity

由于该用户是同一集群创建者,我们将使用以下命令更新 Kube 配置文件:

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

生成的配置文件是在您的主目录中的默认 Kubeconfig 路径 (.kube/config) 中创建的。 kubeconfig 文件是一种组织有关集群、用户、命名空间和身份验证机制的信息的方法。

因此,Kubectl 命令行工具使用 Kubeconfig 文件来查找它需要的有关集群的信息,并了解如何与该集群的 API 服务器进行通信。

现在我们更新了 Kubeconfig,我们是集群创建者。我们能够执行 Kubectl 命令,例如 Kubectl get-service,如下所示:

$ kubectl get svc

但是,如果我们将用户切换到任何其他用户或承担任何角色,那么我们将无法使用 Kubectl 与集群通信。

这是我们登录到亚马逊弹性计算机云实例的地方。我们将执行 sts 获取调用者身份。这显示了附加到实例的角色。

我们将像之前一样执行更新 Kubeconfig 命令,看看我们是否可以与集群通信。现在我们将应用 Kubectl 命令。此命令会生成未经授权的错误,因为附加到 EC2 实例的 IAM 角色没有权限。

因此,在集群创建者窗口中,我们将为 IAM 角色添加权限。这使 EC2 实例能够使用 Kubectl 命令与集群通信。

首先,我们将使用以下命令将 IAM 角色添加到集群的 AWS 配置映射:

$ kubectl edit configmap aws-auth -n kube-system

在映射角色下,我们将添加角色并为其授予系统管理员权限。 system masters 组允许超级用户访问对任何资源执行任何操作。我们将保存更改并从 EC2 实例重试。

请注意,系统主组允许超级用户访问对任何资源执行任何操作。如果你想限制这个用户的访问,那么你需要为这个用户创建一个 Kubernetes 角色和角色绑定,它映射到基于角色的访问控制中。