查看 Kubernetes 资源 - Amazon EKS

查看 Kubernetes 资源

您可以使用 AWS Management Console 查看部署到您的集群的 Kubernetes 资源。您无法使用 AWS CLI 或 eksctl 查看 Kubernetes 资源。要使用命令行工具查看 Kubernetes 资源,请使用 kubectl

先决条件

要在 AWS Management Console 中查看 Compute(计算)选项卡上的 Resources(资源)选项卡和 Nodes(节点)部分,您登录到 AWS Management Console 的用户或者您在登录后切换到的角色必须具有特定的 IAM 和 Kubernetes 权限。有关更多信息,请参阅所需权限

使用 AWS Management Console 查看 Kubernetes 资源

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. Clusters(集群)列表中,选择包含要查看的 Kubernetes 资源的集群。

  3. 选择 Resources 选项卡。

  4. 选择您要查看其资源的 Resource type(资源类型)组,例如 Workloads(工作负载)。您可以看到该组中的资源类型列表。

  5. 选择资源类型,例如 Workloads(工作负载)组中的 Deployments(部署)。您可以看到资源类型的描述、Kubernetes 文档的链接以获取有关资源类型的更多信息,以及在集群上部署的该类型资源的列表。如果列表为空,则表示您的集群中没有部署此类型的资源。

  6. 选择一种资源以查看关于该资源的更多信息。请尝试以下示例:

    • 依次选择 Workloads(工作负载)组、Deployments(部署)资源类型和 coredns 资源。当您选择资源时,您默认情况下处于 Structured view(结构化视图)中。对于某些资源类型,您会在 Structured view(结构化视图)中看到 Pods(容器组(pod))部分。本节列出了由工作负载管理的 pods。您可以选择列出的任何 pod 以查看有关 pod 的信息。并非所有资源类型都在结构化视图中显示信息。如果您在该资源的页面右上角选择 Raw view(原始视图),您可以看到来自 Kubernetes API 对该资源的完整 JSON 响应。

    • 选择 Cluster(集群)组,然后选择 Nodes(节点)资源类型。您可以看到集群中所有节点的列表。节点可以是任意 Amazon EKS 节点类型。这与您在为集群选择 Compute(计算)选项时在 Nodes(节点)部分中看到的列表相同。从列表中选择节点资源。在结构化视图中,您还会看到 Pods(容器组(pod))部分。此部分将向您显示在节点上运行的所有 pods。

所需权限

要在 AWS Management Console 中查看 Compute(计算)选项卡上的 Resources(资源)选项卡和 Nodes(节点)部分,您登录到 AWS Management Console 的用户或者您在登录后切换到的角色必须具有特定的最低 IAM 和 Kubernetes 权限。完成以下步骤以将所需的权限分配给您的用户和角色。

  1. 确保 eks:AccessKubernetesApi 以及查看 Kubernetes 资源的其他必要 IAM 权限,都分配给了您登录 AWS Management Console 所使用的用户,或登录控制台后切换到的角色。有关如何编辑用户权限的更多信息,请参阅《IAM 用户指南》中的更改用户的权限(控制台)。有关如何编辑角色权限策略的信息,请参阅《IAM 用户指南》中的修改角色权限策略(控制台)

    以下示例策略包括用户或角色查看账户中所有集群的 Kubernetes 资源所需的权限。请将 111122223333 替换为您的账户 ID。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:ListFargateProfiles", "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:ListUpdates", "eks:AccessKubernetesApi", "eks:ListAddons", "eks:DescribeCluster", "eks:DescribeAddonVersions", "eks:ListClusters", "eks:ListIdentityProviderConfigs", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:*:111122223333:parameter/*" } ] }

    对于在已连接集群中的节点,Amazon EKS Connector IAM 角色 应能够模拟集群中的 IAM 用户或角色。这使 Amazon EKS Connector 可以将 IAM 用户或角色映射到 Kubernetes 用户。

  2. 创建绑定到 Kubernetes roleclusterrole 的 Kubernetes rolebindingclusterrolebinding,该角色具有查看 Kubernetes 资源所需的权限。要了解有关 Kubernetes 角色和角色绑定的更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权。您可以将以下清单之一应用于创建 rolerolebinding 或者具有必要 Kubernetes 权限的 clusterroleclusterrolebinding 的集群。

    • 查看所有命名空间中的 Kubernetes 资源 - 文件中的组名称为 eks-console-dashboard-full-access-group。使用以下命令将清单应用于集群:

      kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
    • 查看特定命名空间中的 Kubernetes 资源 - 此文件中的命名空间为 default。文件中的组名为 eks-console-dashboard-restricted-access-group。使用以下命令将清单应用于集群:

      kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml

    如果您需要更改 Kubernetes 组名称、命名空间、权限或文件中的任何其他配置,请先下载文件并对其进行编辑,然后再将其应用于集群:

    1. 使用下面的命令之一下载文件:

      curl -o eks-console-full-access.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
      curl -o eks-console-restricted-access.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
    2. 根据需要编辑文件。

    3. 使用以下命令之一将清单应用于集群:

      kubectl apply -f eks-console-full-access.yaml
      kubectl apply -f eks-console-restricted-access.yaml
  3. 将 IAM 用户或角色映射到 aws-auth ConfigMap 中的 Kubernetes 用户或组。您可以使用 eksctl 之类的工具更新 ConfigMap,或者可以通过编辑它来进行手动更新。

    重要

    我们建议使用 eksctl 或者其他工具来编辑 ConfigMap。有关您可以使用的其他工具的信息,请参阅《Amazon EKS 最佳实践指南》中的使用工具对 aws-authConfigMap 进行更改。格式不正确的 aws-auth ConfigMap 可能会导致您失去对集群的访问权限。

    eksctl

    先决条件

    您的设备或 AWS CloudShell 上安装了 0.110.0 版或更高版本的 eksctl 命令行工具。要安装或更新 eksctl,请参阅 安装或更新 eksctl

    1. 查看 ConfigMap 中的当前映射。将 my-cluster 替换为您的集群名称。region-code 替换为集群所在的 AWS 区域。

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      输出示例如下。

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
    2. 为角色添加映射。此示例假设您已在第一步中将 IAM 权限附加到名为 my-console-viewer-role 的角色。请将 111122223333 替换为您的账户 ID。

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:role/my-console-viewer-role \ --group eks-console-dashboard-full-access-group \ --no-duplicate-arns
      重要

      角色 ARN 不能包含 role/my-team/developers/my-role 等路径。ARN 的格式必须为 arn:aws:iam::111122223333:role/my-role。在此示例中,my-team/developers/ 需要删除。

      输出示例如下。

      ... 2022-05-09 14:51:20 [ℹ] adding identity "arn:aws:iam::111122223333:role/my-console-viewer-role" to auth ConfigMap
    3. 为用户添加映射。此示例假设您已在第一步中将 IAM 权限附加到名为 my-user 的用户。请将 111122223333 替换为您的账户 ID。

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:user/my-user \ --group eks-console-dashboard-restricted-access-group \ --no-duplicate-arns

      输出示例如下。

      ... 2022-05-09 14:53:48 [ℹ] adding identity "arn:aws:iam::111122223333:user/my-user" to auth ConfigMap
    4. 再次查看 ConfigMap 中的映射。

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      输出示例如下。

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes arn:aws:iam::111122223333:role/my-console-viewer-role eks-console-dashboard-full-access-group arn:aws:iam::111122223333:user/my-user eks-console-dashboard-restricted-access-group
    Edit ConfigMap manually

    有关将用户或角色添加到 aws-auth ConfigMap 的更多信息,请参阅将 IAM 用户、角色或AWS账户添加到 ConfigMap

    1. 打开 ConfigMap 文件进行编辑。

      kubectl edit -n kube-system configmap/aws-auth
    2. 将映射添加到 aws-auth ConfigMap,但不要替换任何现有的映射。以下示例添加了在第一步中添加权限的 IAM 用户和角色与在上一步中创建的 Kubernetes 组之间的映射:

      • my-console-viewer-role 角色和 eks-console-dashboard-full-access-group

      • my-user 用户和 eks-console-dashboard-restricted-access-group

      这些示例假设您已在第一步中将 IAM 权限附加到名为 my-console-viewer-role 的角色和名为 my-user 的用户。请将 111122223333 替换为您的账户 ID。

      apiVersion: v1 data: mapRoles: | - groups: - eks-console-dashboard-full-access-group rolearn: arn:aws:iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role mapUsers: | - groups: - eks-console-dashboard-restricted-access-group userarn: arn:aws:iam::111122223333:user/my-user username: my-user
      重要

      角色 ARN 不能包含 role/my-team/developers/my-console-viewer-role 等路径。ARN 的格式必须为 arn:aws:iam::111122223333:role/my-console-viewer-role。在此示例中,my-team/developers/ 需要删除。

    3. 保存文件,然后退出编辑器。